当我在首页上浏览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;
}
}
任何帮助将不胜感激!
#1尝试使用这种方式:
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并且CPT的has_archive属性设置为true时才返回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
)
);
}
谢谢!
#2【如何更改帖子类型” 页面” 上CPT循环的摘要长度()】如果你不在存档页面上, 则is_post_type_archive仅在不检查is_single(), is_singular(‘ podcast’ )的情况下才返回true。
推荐阅读
- 如何在WordPress Astra主题中获得多语言页脚文本()
- 我该如何更改add_action(‘after_setup_theme’,’like_add_custom_post_types’);这个钩子
- 面试官(你说说如何让“线程”按序执行())
- 一次ISV诉求引出的SQL优化步骤的分享
- Java虚拟机规范JVM类加载机制
- 「推荐收藏!」MySQL技术之旅「主从架构」MySQL主从数据同步模式的指南分析
- VMware产品介绍
- 一起玩转树莓派(15)——干簧管传感器
- 史上最全jdk新特性总结,涵盖jdk8到jdk15!