个性化阅读
专注于IT技术分析

如何更改帖子类型”页面”上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;
    }
}

任何帮助将不胜感激!


#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


如果你不在存档页面上, 则is_post_type_archive仅在不检查is_single(), is_singular(‘podcast’)的情况下才返回true。

赞(0)
未经允许不得转载:srcmini » 如何更改帖子类型”页面”上CPT循环的摘要长度?

评论 抢沙发

评论前必须登录!