分类自定义插件开发问题的相关帖子

时间:2017-04-06 07:33:19

标签: php wordpress

我面临着一个自定义插件的问题,该插件将根据特定类别(移动设备)的分类显示相关帖子。如果没有匹配后的分类,则应显示该特定类别的其他帖子。首先,我获取了当前帖子的所有分类和术语(single.php)。然后我使用循环准备一个查询参数。该代码适用于以下情况,

a)我没有添加任何帖子标签(当前帖子),然后它显示来自同一类别(手机)的其他帖子,

b)如果我添加了帖子标签,并且还有其他帖子与该帖子标签的条款匹配。

但是,当我添加帖子标签时,它不起作用,并且没有匹配这些条款的帖子。但是,在这里我想要,如果条款没有匹配的帖子,那么只需显示其他帖子,无论条款如何。我可以这样做,当have_posts失败时使用新查询,但我在想是否有任何其他方法可以使用相同的查询参数,请帮助

我正在放置我正在尝试开发的代码。

    $post_args = array();

    $taxonomies = get_post_taxonomies( $post );

    foreach ($taxonomies as $key => $taxonomy) {
        # code...
        if($taxonomy == 'category') continue;
        $terms =  wp_get_post_terms( get_the_ID(), $taxonomy );
        $term_array = array();

        if($terms){
            foreach ($terms as $key => $value) {
                array_push($term_array, $value->slug);
            }

            array_push($post_args,
                array(
                    'taxonomy' => $taxonomy,
                    'field'    => 'slug',
                    'terms'    => $term_array,
                    )
                );
        }
    }

    $tax_query = array();
    $tax_query['relation'] =  'OR';

    foreach ($post_args as $key => $value) {
        # code...
        array_push($tax_query, $value);
    }

    $args = array(
        'post_type' => 'post',
            // 'category_name' => 'mobiles',
        'post__not_in' =>  array($curr_post_id),
        'posts_per_page' => 10,
        'orderby' => 'relevance',
        'order' => 'ASC',
        'tax_query' => 
        array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'category',
                'field'    => 'slug',
                'terms'    => 'mobiles',
                )
            ,
            array($tax_query)
            )
        );

    $the_query = new WP_Query( $args );

1 个答案:

答案 0 :(得分:0)

在尝试了很多之后,我决定使用另一个后循环。比如,如果第一个循环没有结果,只需从类别中选择随机发布。如果第一个循环中的帖子很少(最多10个帖子),那么请用另一个循环来选择随机帖子,不包括我们从第一个循环获得的帖子ID。