के तहत ट्रैकबैक / पिंगबैक को बंद करने का विकल्प है Settings > Discussion
।
लेकिन मैं X-Pingback
शीर्ष लेख WordPress भेजता है और पूरी तरह से trackback
समापन बिंदु को दूर करना चाहते हैं ।
क्या इसे करने का कोई तरीका है?
के तहत ट्रैकबैक / पिंगबैक को बंद करने का विकल्प है Settings > Discussion
।
लेकिन मैं X-Pingback
शीर्ष लेख WordPress भेजता है और पूरी तरह से trackback
समापन बिंदु को दूर करना चाहते हैं ।
क्या इसे करने का कोई तरीका है?
जवाबों:
<?php
/*
Plugin Name: [RPC] XMLRPCless Blog
Plugin URI: http://earnestodev.com/
Description: Disable XMLRPC advertising/functionality blog-wide.
Version: 0.0.7
Author: EarnestoDev
Author URI: http://earnestodev.com/
*/
// Disable X-Pingback HTTP Header.
add_filter('wp_headers', function($headers, $wp_query){
if(isset($headers['X-Pingback'])){
// Drop X-Pingback
unset($headers['X-Pingback']);
}
return $headers;
}, 11, 2);
// Disable XMLRPC by hijacking and blocking the option.
add_filter('pre_option_enable_xmlrpc', function($state){
return '0'; // return $state; // To leave XMLRPC intact and drop just Pingback
});
// Remove rsd_link from filters (<link rel="EditURI" />).
add_action('wp', function(){
remove_action('wp_head', 'rsd_link');
}, 9);
// Hijack pingback_url for get_bloginfo (<link rel="pingback" />).
add_filter('bloginfo_url', function($output, $property){
return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
// Just disable pingback.ping functionality while leaving XMLRPC intact?
add_action('xmlrpc_call', function($method){
if($method != 'pingback.ping') return;
wp_die(
'Pingback functionality is disabled on this Blog.',
'Pingback Disabled!',
array('response' => 403)
);
});
?>
एक प्लगइन में के लिए इसका उपयोग करें / WP-सामग्री / plugins या / WP-सामग्री / म्यू प्लगइन्स (स्वत: सक्रिय करने के लिए) । या फ़ंक्शन । एफपी ।
मजेदार बात यह है कि मैं एक वर्डप्रेस रिमोट पब्लिशिंग लाइब्रेरी बेच रहा हूं और आपको प्रतिष्ठा के लिए XMLRPC :) बैड को अक्षम करने का कोड दिया है ।
@EestestoDev के पास एक शानदार जवाब था , लेकिन हाल ही के xml-rcp के कारनामों के बाद से यह थोड़ा पुराना है ।
मैंने एक अद्यतन संस्करण बनाया है जो मुझे लगता है कि इसके लिए हर संभव पहुंच को अवरुद्ध करता है। ध्यान दें कि वहाँ कुछ प्लगइन्स हैं जो XML-RPC पिंगबैक / ट्रैकबैक कार्यक्षमता का उपयोग करते हैं और यदि आप उनका उपयोग कर रहे हैं तो समस्याएँ हो सकती हैं:
यहाँ एक अद्यतन संस्करण नीचे दिया गया है। इसे डाउनलोड करने के लिए आप इसे एक प्लगइन फाइल में कॉपी कर सकते हैं, म्यू-प्लग में ड्रॉप कर सकते हैं या इसे गिथब पर डाउनलोड कर सकते हैं :
<?php
/*
Plugin Name: BYE BYE Pingback
Plugin URI: https://github.com/Wordpress-Development/bye-bye-pingback/
Description: Banishment of wordpress pingback
Version: 1.0.0
Author: bryanwillis
Author URI: https://github.com/bryanwillis/
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* Htaccess directive block xmlrcp for extra security.
* Here are some rewrite examples:
* 404 - RewriteRule xmlrpc\.php$ - [R=404,L]
* 301 - RewriteRule ^xmlrpc\.php$ index.php [R=301]
* If you want custom 404 make sure your server is finding it by also adding this 'ErrorDocument 404 /index.php?error=404' or 'ErrorDocument 404 /wordpress/index.php?error=404' for sites in subdirectory.
*/
add_filter('mod_rewrite_rules', 'noxmlrpc_mod_rewrite_rules'); // should we put this inside wp_loaded or activation hook
function noxmlrpc_mod_rewrite_rules($rules) {
$insert = "RewriteRule xmlrpc\.php$ - [F,L]";
$rules = preg_replace('!RewriteRule!', "$insert\n\nRewriteRule", $rules, 1);
return $rules;
}
register_activation_hook(__FILE__, 'noxmlrpc_htaccess_activate');
function noxmlrpc_htaccess_activate() {
flush_rewrite_rules(true);
}
register_deactivation_hook(__FILE__, 'noxmlrpc_htaccess_deactivate');
function noxmlrpc_htaccess_deactivate() {
remove_filter('mod_rewrite_rules', 'noxmlrpc_mod_rewrite_rules');
flush_rewrite_rules(true);
}
// Remove rsd_link from filters- link rel="EditURI"
add_action('wp', function(){
remove_action('wp_head', 'rsd_link');
}, 9);
// Remove pingback from head (link rel="pingback")
if (!is_admin()) {
function link_rel_buffer_callback($buffer) {
$buffer = preg_replace('/(<link.*?rel=("|\')pingback("|\').*?href=("|\')(.*?)("|\')(.*?)?\/?>|<link.*?href=("|\')(.*?)("|\').*?rel=("|\')pingback("|\')(.*?)?\/?>)/i', '', $buffer);
return $buffer;
}
function link_rel_buffer_start() {
ob_start("link_rel_buffer_callback");
}
function link_rel_buffer_end() {
ob_flush();
}
add_action('template_redirect', 'link_rel_buffer_start', -1);
add_action('get_header', 'link_rel_buffer_start');
add_action('wp_head', 'link_rel_buffer_end', 999);
}
// Return pingback_url empty (<link rel="pingback" href>).
add_filter('bloginfo_url', function($output, $property){
return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
// Disable xmlrcp/pingback
add_filter( 'xmlrpc_enabled', '__return_false' );
add_filter( 'pre_update_option_enable_xmlrpc', '__return_false' );
add_filter( 'pre_option_enable_xmlrpc', '__return_zero' );
// Disable trackbacks
add_filter( 'rewrite_rules_array', function( $rules ) {
foreach( $rules as $rule => $rewrite ) {
if( preg_match( '/trackback\/\?\$$/i', $rule ) ) {
unset( $rules[$rule] );
}
}
return $rules;
});
// Disable X-Pingback HTTP Header.
add_filter('wp_headers', function($headers, $wp_query){
if(isset($headers['X-Pingback'])){
unset($headers['X-Pingback']);
}
return $headers;
}, 11, 2);
add_filter( 'xmlrpc_methods', function($methods){
unset( $methods['pingback.ping'] );
unset( $methods['pingback.extensions.getPingbacks'] );
unset( $methods['wp.getUsersBlogs'] ); // Block brute force discovery of existing users
unset( $methods['system.multicall'] );
unset( $methods['system.listMethods'] );
unset( $methods['system.getCapabilities'] );
return $methods;
});
// Just disable pingback.ping functionality while leaving XMLRPC intact?
add_action('xmlrpc_call', function($method){
if($method != 'pingback.ping') return;
wp_die(
'This site does not have pingback.',
'Pingback not Enabled!',
array('response' => 403)
);
});
यदि आप सभी मौजूदा पिंगबैक को बंद करना चाहते हैं, तो इन चरणों का पालन करें:
1) phpmyadmin खोलें और SQL अनुभाग पर जाएँ:
2) निम्नलिखित दर्ज करें:
UPDATE wp_posts SET ping_status="closed";
3) सभी मौजूदा पिंगबैक को अब बंद कर दिया जाना चाहिए
return '0'
आपकी अपेक्षा के अनुरूप काम नहीं हो रहा है। स्ट्रिंग'0'
सही लौटेगी।add_filter( 'pre_option_enable_xmlrpc', '__return_false' );