Add a filter to an action

时间:2016-06-10 作者:JacobTheDev

我觉得这是一个非常简单的问题,但我似乎什么都找不到。我想向操作添加筛选器,以便运行preg_replace 在其上向链接添加类。

行动是:

do_action("tribe_events_single_event_after_the_content");
这就是我试图使用的过滤器,我肯定我在做一些愚蠢的事情:

function fix_tribe_button_class($content) {
    $content = preg_replace("/tribe-events-button/i", "tribe-events-button button", $content);

    return $content;
}
add_filter("the_content", "fix_tribe_button_class", 999, 1);
我甚至试过return "test"; 看看我是否匹配错误。这根本没有影响任何事情。

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

操作名称表明它已运行_after_the_content, 不在the_content 所以你可能需要做一些不同的事情,比如@SamuelElh建议。。。

您可以将一个函数添加到具有早期优先级的操作缓冲区中,然后将一个过滤器添加到具有晚期优先级的最终输出中:

add_action(\'tribe_events_single_event_after_the_content\',\'tribe_events_single_event_buffer_start\',0);
function tribe_events_single_event_buffer_start() {ob_start();}

add_action(\'tribe_events_single_event_after_the_content\',\'tribe_events_single_event_buffer_end\',999);
function tribe_events_single_event_buffer_end() {
    return apply_filters(\'tribe_events_single_event_filter_output\',ob_get_clean());
}

function tribe_events_single_event_filter_output($content) {
    $content = preg_replace("/tribe-events-button/i", "tribe-events-button button", $content);
    return $content;
}

相关推荐

Apply filters on date format

我使用Wordpress主题,其中格式日期和时间直接编码为两种格式:<?php the_time(\'d M\'); ?> <?php the_time(\'H:i\'); ?> 我想要的:显示wordpress选项中定义的日期和时间我不想在子主题中创建修改过的模板,我更喜欢使用函数。我已经在函数中添加了php。php此代码有效:add_filter( \'the_time\', \'changer_date_format\', 10, 1 ); //o