如何从模板中筛选_Content()和Include内容

时间:2014-02-08 作者:user1983017

我正在尝试筛选the_content() 在单个页面上,但它似乎正在创建一个无限循环。我想知道如何解决这个问题。我要覆盖the_content().

有没有其他方法可以覆盖插件中的单页内容?

add_filter( \'the_content\', \'change_single_content\' );
function change_single_content($content){
    global $post;

    if ( \'my-CPT\' == get_post_type() && is_single() ){
        ob_start();
        include my_plugin_theme(\'single-template.php\'); //include single template content
        return ob_get_clean();
    }

    return $content;
}

2 个回复
SO网友:s_ha_dum

我猜是这样的single-template.php 使用the_content. 现在想想会发生什么:

过滤器的原因single-template.php 加载single-template.php 使用the_contentsingle-template.php 再次加载使用the_content

  • 哪个加载single-template.phpthe_content
  • add_filter( \'the_content\', \'change_single_content\' );
    function change_single_content($content){
        global $post;
    
        if ( \'my-CPT\' == get_post_type() && is_single() ){
            remove_filter( \'the_content\', \'change_single_content\' ); // this !!
            ob_start();
            include my_plugin_theme(\'single-template.php\'); //include single template content
            return ob_get_clean();
        }
    
        return $content;
    }
    
    我也很确定你所做的是错误的,或者至少是不太正确的方式,去做你想做的事情。我不能证明这一点,但我的蜘蛛感觉刺痛了一些可怕的东西。

  • SO网友:Sudeep K Rana

    add_filter( \'the_content\', \'filter_content\' );
    function filter_content( $content ){
        if ( is_single() ){
            $new_content = str_replace( \'for\', \'FOR\', $content );
            return $new_content;
        }
        else
        {
            return $content;
        }
    }
    
    试试这个。我已尝试在单个帖子上替换\\u内容。它正在替换,但不在索引页上,因为is_single() 条件

    你可以根据需要调整它。

    您的代码的问题是您正在接受$content 作为参数并返回ob_get_clean(). 你应该回去$content 在这种情况下,调整后。

    按照上述准则,我已接受$content, 调整后返回$new_content.

    结束

    相关推荐

    Too many actions/filters!

    这里是wordpress的新成员。动作/过滤器的概念本身并不难理解。令我不知所措的是大量可用的操作和过滤器。当我阅读教程/指南时,他们会说“只需将此功能添加到wp\\U head操作或after\\U setup\\u主题”。如果没有这些教程,我究竟如何知道将该函数与该操作挂钩?作为一个初学者,我怎么会知道什么是合适的操作?有没有关于如何导航的建议?谢谢