根据帖子类改变wordpress摘录长度

时间:2014-06-10 14:13:30

标签: wordpress

我在WordPress中使用以下PHP将不同的类应用于我的主页上的帖子,具体取决于他们的位置:

<article id="post-<?php the_ID(); ?>"
<?php 
    $extra = ( ( $wp_query->current_post % 5 == 0 && !is_page() ) ? 'full' : 'half' ) . ( ( ( $wp_query->current_post % 5 == 1 || $wp_query->current_post % 5 == 3 ) && !is_page() ) ? ' left' : '' );
    post_class($extra);
?>>

在我的functions.php中,我使用以下内容来更改这些帖子的摘录长度:

function twentytwelvechild_custom_excerpt_length( $length ) {
    global $wp_query;
    if( $wp_query->current_post%5 == 0 ) return 30;
    else return 12;
}
add_filter( 'excerpt_length', 'twentytwelvechild_custom_excerpt_length', 12 );`

这给出了每5个摘录长度为30的第一个帖子,其余12个,但我不想这样做。

如何使用PHP将类“full”的帖子的摘录长度更改为30个单词,将类的一半更改为12个单词?

希望这是有道理的

詹姆斯

2 个答案:

答案 0 :(得分:1)

选项1:

使用摘录长度过滤器将它们全部设为30,然后使用wp_trim_words()在页面本身上删除一些。

选项2:

从原始过滤器钩子中删除条件并返回30.创建一个新函数,该函数将返回12但实际上并未将其挂起。

function twentytwelvechild_custom_excerpt_length( $length ) {
    return 30;
}
add_filter( 'excerpt_length', 'twentytwelvechild_custom_excerpt_length', 12 );

function twentytwelvechild_custom_excerpt_short( $length ) {
    return 12;
} 

然后,当您想要显示较短的摘录时,请在页面上使用以下内容。

add_filter( 'excerpt_length', 'twentytwelvechild_custom_excerpt_short', 20 );
the_excerpt();
remove_filter( 'excerpt_length', 'twentytwelvechild_custom_excerpt_short', 20 );

在输出摘录之前添加过滤器,您需要将长度更改为12.您将显示摘录,然后移除过滤器,以便后续帖子将恢复正常30。

答案 1 :(得分:1)

我已经解决了!!基本上我上面使用的PHP对每个帖子都有影响 - 档案,博客页面,搜索结果。我问了这个问题,因为我正在构建我的搜索页面,并希望搜索结果看起来与存档和主页布局不同。所以我只是做了上述有条件的&#39;更有条件的&#39;

function twentytwelvechild_custom_excerpt_length( $length ) { global $wp_query; if( $wp_query->current_post%5 == 0 && ( is_home() || is_archive() ) ) return 30; else return 12; } add_filter( 'excerpt_length', 'twentytwelvechild_custom_excerpt_length', 12 );