如何使用post_type,posts_per_page和ID获取自定义类型的帖子过滤

时间:2018-06-12 00:02:41

标签: php wordpress custom-post-type

在我的短代码中,我想从我的custom_type_post获取帖子,但是使用ids,post_type和posts_per_page过滤它们

e.g。 [myshortcode type="my_custom_type_post"] - 显示my_custom_type_post

中的所有帖子

[myshortcode type="my_custom_type_post" no_of_posts="3"] - 仅显示3个帖子

[myshortcode type="my_custom_type_post" no_of_posts="1" id="112"] - 显示特定帖子

这是我的代码。当我只发送type和posts_per_page并且ids但是当我想显示所有帖子或no_of_posts

时它不起作用
// extracting values from shortcode
       extract( shortcode_atts( array (
        'type' => '',
        'no_of_posts' => '',
        'id' => ''
    ), $atts ) );

   $id_array = array_map('intval',explode(',',$id));

$args = array(
    'post_type' => $type,
    'posts_per_page' => $no_of_posts,
    'post__in' => $id_array
);

然后将值传递给wp_query

$query = new WP_Query( $args );
if( $query->have_posts() ){

/*printing out results*/

}

1 个答案:

答案 0 :(得分:1)

您必须使用以下条件代码

extract( shortcode_atts( array (
        'type' => '',
        'no_of_posts' => '',
        'id' => ''
    ), $atts ) );

$args['post_type'] = $type;

if($no_of_posts) {
    $args['posts_per_page'] = $no_of_posts;
} else {
    $args['posts_per_page'] = '-1';
}

if($id) {
    $args['post__in'] = array_map('intval',explode(',',$id));
}

我只是根据条件

设置参数