我在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个单词?
希望这是有道理的
詹姆斯
答案 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 );