2015-07-10 50 views
3

我想从特定类别或特定用户发布帖子。看来我们在wordpress中只能有AND条件。我知道下面的代码是错误的,但是这是我需要得到 - 我希望所有由特定用户编写的帖子或从一个特定的类别按类别或作者获取文章wordpress

$args = array(
    'posts_per_page' => 10, 
    'offset'   => $PageStart, 
    'query' => array(
    'relation' => 'OR', /* <--    here */ 
    array(
     'author' => 18, 
    ), 
    array(
     'category' => 20, 
     ) 
    ), 
    'orderby'   => 'date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish', 

); 
//print_r($args); 
$author_post = get_posts($args); 

请你帮助所有的职位。提前致谢 。

回答

0

我已经找到解决这个问题,我有一个自定义查询做了合并两个数组

SELECT DISTINCT wposts.* 
      FROM $wpdb->posts wposts 
       LEFT JOIN $wpdb->postmeta wpostmeta 
       ON wposts.ID = wpostmeta.post_id 
       LEFT JOIN $wpdb->term_relationships 
       ON (wposts.ID = $wpdb->term_relationships.object_id) 
       LEFT JOIN $wpdb->term_taxonomy 
       ON ($wpdb->term_relationships.term_taxonomy_id 
        = $wpdb->term_taxonomy.term_taxonomy_id) 
       AND wposts.post_status = 'publish' 
       AND $wpdb->term_taxonomy.taxonomy = 'category' 
       AND ($wpdb->term_taxonomy.term_id IN($cat_list) 
       OR wposts.post_author IN ($authors)) 
      ORDER BY wposts.post_date DESC 

其中$ cat_list是一个包含您的类别ID和ID作品的数组,其中包含您的作者ID。希望这会帮助有需要的人。

1

如果你想同时做get_posts() 2倍试试这个代码

$args = array(
    'posts_per_page' => 10, 
    'offset'   => $PageStart, 
    'author'  => '18', 
    'orderby'   => 'date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish', 

); 
$author_post = get_posts($args); 

$args = array(

    'posts_per_page' => 10, 
    'offset'   => $PageStart, 
    'category'   => '20', 
    'orderby'   => 'date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish', 
); 
$category_post = get_posts($args); 
$total_post = array_merge($category_post,$author_post) 
+1

这将调用'AND'他不想再想要.. –

0

  1. 来自用户的所有文章 类别
  2. 的所有帖子,然后用array_merge()
+0

我已经尝试过,但它使分页问题和我需要的帖子以降序显示,所以如果我可以做到一个单一的查询所有这些问题将得到解决。 – akhila