有没有人能帮我用原文描述替换创世纪后的摘录?如果没有原文描述,请显示摘录?

时间:2016-07-25 作者:Tanvir

你好,

我确实在我的孩子主题中用yoast元描述替换了《创世纪》的帖子摘录,但问题是,我想在没有元描述的时候再显示帖子摘录。我使用的函数是,

remove_action( \'genesis_entry_content\', \'genesis_do_post_content\' );
add_action( \'genesis_entry_content\', \'excerpt_to_meta_desc\' );

function excerpt_to_meta_desc(){

if ( is_singular() ) {
    the_content();

    if ( is_single() && \'open\' === get_option( \'default_ping_status\' ) && post_type_supports( get_post_type(), \'trackbacks\' ) ) {
        echo \'<!--\';
        trackback_rdf();
        echo \'-->\' . "\\n";
    }

    if ( is_page() && apply_filters( \'genesis_edit_post_link\', true ) )
        edit_post_link( __( \'(Edit)\', \'genesis\' ), \'\', \'\' );
}
elseif ( \'excerpts\' === genesis_get_option( \'content_archive\' ) ) {


        if($output=get_post_meta(get_the_ID(), \'_yoast_wpseo_metadesc\', true)){
        add_filter( \'get_the_excerpt\', \'replace_post_excerpt_filter\' );

            function replace_post_excerpt_filter($output) { 
                return $output;
            }   

            echo get_post_meta(get_the_ID(), \'_yoast_wpseo_metadesc\', true) .\'&nbsp; <a href="\' . get_permalink() . \'" class="excerpt_more">Read&nbsp;More</a>\';
        }
        else{
            the_excerpt();
        }

}

else {
    if ( genesis_get_option( \'content_archive_limit\' ) )
        the_content_limit( (int) genesis_get_option( \'content_archive_limit\' ), genesis_a11y_more_link( __( \'[Read more...]\', \'genesis\' ) ) );
    else
        the_content( genesis_a11y_more_link( __( \'[Read more...]\', \'genesis\' ) ) );
   }
}
它在我的localhost中工作正常,但在联机域中会导致致命错误。类似这样的内容,“Cannot redecaler replace\\u post\\u extract\\u filter()(之前在….中声明)”

http://clientproject.twramz.org/

我已经检查了所有文件,这是我使用此摘录过滤器的唯一函数。请问有什么解决办法吗?

1 个回复
SO网友:GaryJ

删除:

 add_filter( \'get_the_excerpt\', \'replace_post_excerpt_filter\' );

        function replace_post_excerpt_filter($output) { 
            return $output;
        }   
从您的代码中,您应该会发现它是有效的。

在这里,嵌套函数的问题在于,一旦第一次调用父函数,它就定义了内部函数,但当第二次调用父函数时(在这种情况下,当存档页或posts小部件上显示另一个Genesis条目时),它会尝试再次定义内部函数,但这会导致致命错误,因为PHP不允许这样做。

在这种情况下,您正在过滤摘录,但除了立即返回原始值外,不对传递到filter函数的值执行任何操作,即filter不执行任何操作。因此,您可以删除冗余过滤器及其回调,这应该可以修复负面影响。

相关推荐

Strip div From Excerpt

我在特定页面中有\\u extract(),我需要去掉一个div并保留文本,但只保留在该页面的摘录中。我相信我需要创建一个带有自定义摘录的函数,但我不知道该怎么做。测试了我在这里找到的几种解决方案,但没有任何效果。