如何停止或删除在扩展类的函数内调用的操作

时间:2016-02-16 作者:Andre Bulatov

问题是,我试图删除一个由WordPress插件添加的JSON+LD块,该插件名为事件日历。

我相信它是由一个名为:Tribe__Events__Template__Single_Event 其中名为google_data_markup 负责我试图阻止/阻止添加到HTML的实际标记。

代码

根据我对此的有限理解,我需要删除此操作:

add_action( \'wp_head\', array( $this, \'google_data_markup\' ) );.

我相信它在这里被称为Single\\u事件。php:

if ( ! class_exists( \'Tribe__Events__Template__Single_Event\' ) ) {
    /**
     * Single event template class
     */
    class Tribe__Events__Template__Single_Event extends Tribe__Events__Template_Factory {

        protected $body_class = \'events-single\';

        public function hooks() {
            parent::hooks();

            // google data markup
            add_action( \'wp_head\', array( $this, \'google_data_markup\' ) );

        }

        public function google_data_markup() {
            $event_markup = new Tribe__Events__Google_Data_Markup__Event();
            $html = apply_filters( \'tribe_google_data_markup_json\', $event_markup->script_block() );
            echo $html;
        }

        /**
        ...
找到后的最初尝试this 堆栈溢出时,以及this 在WordPress Dev Exchange上,我尝试了:

remove_action( \'wp_head\', array( \'Tribe__Events__Template__Single_Event\', \'google_data_markup\' ) );
以及

global $Tribe__Events__Template__Single_Event;
remove_action( \'wp_head\', array( $Tribe__Events__Template__Single_Event, \'google_data_markup\' ) );
但它没有起作用。

在更加绝望和看到this slim thread (该线程中的示例似乎与我的非常相似,但如果我理解,则没有答案),以及this, 我也尝试过这个& 变量名称之前(为什么?)

remove_action( \'wp_head\', array( &$Tribe__Events__Template__Single_Event, \'google_data_markup\' ) );
我也尝试过:

function remove_the_events_calendar_jsonld() {
    remove_action( \'wp_head\', array( $Tribe__Events__Template__Single_Event, \'google_data_markup\' ) );
}
add_action( \'plugins_loaded\', \'remove_the_events_calendar_jsonld\', 1 );
以及:

remove_action( \'Tribe__Events__Template__Single_Event\', \'google_data_markup\' );
请帮忙。在这一点上,我不知道我是否犯了一个简单的语法或逻辑错误,或者我是否完全困惑,忘记了函数、类和动作是如何工作的。

1 个回复
最合适的回答,由SO网友:Andre Bulatov 整理而成

在SO用户的帮助下解决了这个问题!

这将删除ld+json 事件日历添加的块:

add_filter( \'tribe_google_data_markup_json\', \'__return_empty_string\', 20 );

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果