如何在帖子类型“页面”上更改CPT循环的摘录长度?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在帖子类型“页面”上更改CPT循环的摘录长度?相关的知识,希望对你有一定的参考价值。
当我在我的主页上循环CPT时,它显示正确,但我无法控制摘录长度。
我想在我的头版上循环浏览4种不同的CPT。循环正在工作,但我控制摘录长度的条件逻辑没有按预期工作,因为get_post_type返回“page”而不是实际的CPT。
这是我的functions.php:
add_filter('excerpt_length', 'll_get_excerpt_length');
function ll_get_excerpt_length($size) {
if (is_post_type_archive('post')) {
return 40;
} elseif (is_post_type_archive('podcast')) {
return 15;
} elseif (is_post_type_archive('review')) {
return 5;
} else {
return $size;
}
}
当var转储帖子类型时我得到“页面”,所以我不知道在哪里或如何控制各种长度的摘录。
我希望我的首页上的每个CPT循环的摘录长度都是正确的。
当我用print_r添加以下内容时,我只进入函数但不进入ifs。
add_filter('excerpt_length', 'll_get_excerpt_length');
function ll_get_excerpt_length($size) {
print_r(get_post_type());
if (is_post_type_archive('post')) {
print_r(get_post_type());
return 40;
} elseif (is_post_type_archive('podcast')) {
print_r(get_post_type());
return 15;
} elseif (is_post_type_archive('review')) {
print_r(get_post_type());
return 5;
} else {
return $size;
}
}
任何帮助将不胜感激!
答案
尝试使用这种方式:
add_filter('excerpt_length', 'll_get_excerpt_length');
function ll_get_excerpt_length( $size ) {
if ( is_archive() ) {
return 40;
} elseif (is_post_type_archive('podcast')) {
return 15;
} elseif (is_post_type_archive('review')) {
return 5;
} else {
return $size;
}
}
is_post_type_archive()只有在CPT的情况下返回true,并且CPT的has_archive属性设置为true,如下所示:
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'review',
array(
'labels' => array(
'name' => __( 'Reviews' ),
'singular_name' => __( 'Review' )
),
'public' => true,
'has_archive' => true, //like this
)
);
}
谢谢!
另一答案
is_post_type_archive只会在你没有检查is_single(),is_singular('podcast')的情况下在归档页面上返回true?
以上是关于如何在帖子类型“页面”上更改CPT循环的摘录长度?的主要内容,如果未能解决你的问题,请参考以下文章
php 联系表单7插件:在使用Contact Form 7短代码的页面,帖子和CPT上加载Javascript和CSS。
php 联系表单7插件:在使用Contact Form 7短代码的页面,帖子和CPT上加载Javascript和CSS。