পিংব্যাকস / ট্র্যাকব্যাকগুলি পুরোপুরি বন্ধ করার কোনও উপায় আছে কি?


13

এর অধীনে ট্র্যাকব্যাক / পিংব্যাকগুলি বন্ধ করার বিকল্প রয়েছে Settings > Discussion

তবে আমি X-Pingbackওয়ার্ডপ্রেস প্রেরিত trackbackশিরোনামগুলি সরিয়ে এবং শেষের অবস্থানটি সম্পূর্ণরূপে সরিয়ে দিতে চাই ।

এই কাজ করতে একটি উপায় আছে কি?

উত্তর:


12
<?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)
    );
});
?>

এটিকে / ডাব্লুপি-কনটেন্ট / প্লাগইন বা / ডাব্লুপি-কনটেন্ট / মিউ-প্লাগইনগুলিতে (অটো-অ্যাক্টিভেশনের জন্য) প্লাগইন ব্যবহার করুন । বা ফাংশন.এফপি

মজার বিষয় হ'ল আমি একটি ওয়ার্ডপ্রেস রিমোট পাবলিশিং লাইব্রেরি বিক্রি করি এবং আপনাকে এক্সএমএলআরপিসি অক্ষম করার কোড দিয়েছি :) খ্যাতির জন্য খারাপ।


return '0'আপনি আশা হিসাবে কাজ করতে যাচ্ছে না। স্ট্রিং '0'সত্য ফিরে আসবে। add_filter( 'pre_option_enable_xmlrpc', '__return_false' );
chrisguitarguy

1
, var_dump ((bool,) '0');
আর্নেস্তোদেভ

Get_option দেখুন এবং কীভাবে pre_option_ * হাইজ্যাকিং কাজ করে। যদি আপনি __ত্যাগ করুন_ফালস ... এটি উপেক্ষা করা হয় এবং যথারীতি প্রক্রিয়া শুরু করা হয়। আপনাকে অবশ্যই কোনও কিছু ফেরত দিতে হবে না === মিথ্যা। কোড দেখুন।
আর্নেস্তোদেভ

3
সাহায্যের জন্য ধন্যবাদ. পুনর্লিখনের নিয়মগুলি অক্ষম করতে আরও একটি জিনিস যুক্ত করা হয়েছে: gist.github.com/1309433
chrisguitarguy

5

@ আর্নেস্তোদেবের একটি দুর্দান্ত উত্তর ছিল , তবে সাম্প্রতিক এক্সএমএল-আরসিপি শোষণের পরে এটি এখন কিছুটা পুরানো ।

আমি একটি আপডেট সংস্করণ তৈরি করেছি যা আমি মনে করি এটির সমস্ত সম্ভাব্য অ্যাক্সেসকে অবরুদ্ধ করে। এক্সএমএল-আরপিসি পিংব্যাক / ট্র্যাকব্যাক কার্যকারিতা ব্যবহার করে এমন কয়েকটি প্লাগইন থাকলেও আপনি সেগুলি ব্যবহার করে থাকলে সমস্যা থাকতে পারে তা লক্ষ করুন:

  • ওয়ার্ডপ্রেস মোবাইল অ্যাপ
  • জেটপ্যাক লিবিসিন (পডকাস্টের জন্য)
  • বুডিপ্রেসের কিছু অংশ
  • উইন্ডোজ লাইভ রাইটার
  • IFTTT
  • কয়েকটি গ্যালারী প্লাগইন

নীচে একটি আপডেট সংস্করণ এখানে। এটি ডাউনলোড করতে আপনি এটি একটি প্লাগইন ফাইলে অনুলিপি করতে পারেন, মিউ-প্লাগইনগুলিতে নেমে বা গিথুব এ ডাউনলোড করতে পারেন :

<?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) সমস্ত বিদ্যমান পিংব্যাক এখন বন্ধ করা উচিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.