更改特定页面ID的摘录长度

时间:2013-12-19 02:36:01

标签: php wordpress

我正在使用以下函数在所有页面上设置帖子摘录长度的主题:

//excerpt length

if ( !function_exists('custom_excerpt_length')):
    function custom_excerpt_length( $length ) { 
        return 90;
    }

add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

function new_excerpt_more( $more ) {
    return '...';
}

add_filter('excerpt_more', 'new_excerpt_more');

endif;

我添加了新功能:

add_filter( 'get_the_excerpt', 'so20668477_get_the_excerpt', 10, 1 );
function so20668477_get_the_excerpt( $excerpt )
{
if( is_page( 39370 ) )
    $excerpt = apply_filters( 'the_content', get_the_content() );

return $excerpt;
}

但是,它不起作用,仍在第39370页显示摘录。我需要在页面ID = 39370上显示完整长度的帖子。不确定如何添加条件。任何帮助深表感谢。

1 个答案:

答案 0 :(得分:0)

首先,强烈建议您始终使用花括号,即使在技术上可选的情况下也是如此。

不要这样做:

if ( condition )
  return false;

取而代之的是:

if ( condition ) {
  return false;
}

关于您的问题:

此功能apply_filters( 'the_content', get_the_content() );获取内容的 echo 而不是内容,因此您的条件是正确的。 试试这段代码:

if( is_page( 39370 ) ){
    $content = get_the_content();
    $content = apply_filters('the_content', $content);
    $excerpt = explode("[newpage]", $content);
}

return $excerpt;

或者还有另一种方法:

if( is_page( 39370 ) ){
  ob_start();
  the_content();
  $content = ob_get_clean();
}

 return $excerpt;

我希望这个解决方案可以帮到你。