2016-12-16 30 views
0

同じカテゴリの投稿を隠す方法を知っている人はいますか?同じカテゴリの投稿を非表示にする方法

私は同じカテゴリの投稿1、投稿2、投稿3を持っています。私のホームページに最新の投稿(ポスト1)を表示し、他のポスト(ポスト2とポスト3)を隠すことはできますか?

答えて

0

3つの別々のwp_queriesがあります。

//Query 1 
$args1 = array(
    'cat'     => '1', 
    'nopaging'    => true, 
    'posts_per_page'   => '1', 
); $query_1 = new WP_Query($args1); 
if ($query_1->have_posts()) { 
    while ($query_1->have_posts()) { 
     $query_1->the_post(); 
     // put content here 
    } 
} else { 
    // no posts found 
} 
wp_reset_postdata(); 

//Query 2 
$args2 = array(
    'cat'     => '2', 
    'nopaging'    => true, 
    'posts_per_page'   => '1', 
); $query_2 = new WP_Query($args2); 
if ($query_2->have_posts()) { 
    while ($query_2->have_posts()) { 
     $query_2->the_post(); 
     // put content here 
    } 
} else { 
    // no posts found 
} 
wp_reset_postdata(); 

//Query 3 
$args3 = array(
    'cat'     => '3', 
    'nopaging'    => true, 
    'posts_per_page'   => '1', 
); $query_3 = new WP_Query($args3); 
if ($query_3->have_posts()) { 
    while ($query_3->have_posts()) { 
     $query_3->the_post(); 
     // put content here 
    } 
} else { 
    // no posts found 
} 
wp_reset_postdata(); 
0
<?php 
    $args = array(
     'numberposts' => 1, 
     'offset' => 0, 
     'category' => 0, 
     'orderby' => 'post_date', 
     'order' => 'DESC', 
     'post_type' => 'post', 
     'post_status' => 'draft, publish, future, pending, private', 
     'suppress_filters' => true 
    ); 

    // the query 
    $the_query = new WP_Query($args);?> 

<?php if ($the_query->have_posts()) : ?> 

     <!-- pagination here --> 

     <!-- the loop --> 
     <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
      <h2><?php the_title(); ?></h2> 
     <?php endwhile; ?> 
     <!-- end of the loop --> 

     <!-- pagination here --> 

     <?php wp_reset_postdata(); ?> 

    <?php else : ?> 
     <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> 
    <?php endif; ?> 

'カテゴリ' にあなたのカテゴリIDを追加します。詳細については、 を参照してください。 https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Function_Reference/wp_get_recent_posts

0

あなたは、このことによってpre_get_postsフックthroughtホームページのクエリを変更する達成することができます。ここで

コードです:

function txt_domain_get_distinct_post_id() 
{ 
    $post_ids = []; 

    //getting all non empty category 
    $categories = get_terms('category', array(
     'orderby' => 'count', 
     'hide_empty' => 0, 
    )); 

    foreach ($categories as $category) 
    { 
     $args = array(
      'posts_per_page' => -1, 
      'category' => $category->term_id, 
      'exclude' => $post_ids, 
      'orderby' => 'date', 
      'order' => 'DESC', 
      'post_type' => 'post', 
      'post_status' => 'publish' 
     ); 
     //getting post from a specific category 
     $postlist = get_posts($args); 
     foreach ($postlist as $post) 
     { 
      if (!in_array($post->ID, $post_ids)) 
      { 
       //this will only select one post form each category 
       $post_ids[] = $post->ID; 
       break; 
      } 
     } 
    } 
    return $post_ids; 
} 


add_filter('pre_get_posts', 'txt_domain_filter_get_posts'); 

function txt_domain_filter_get_posts($query) 
{ 
    if (is_home() && $query->is_main_query()) 
    { 
     $post_ids = txt_domain_get_distinct_post_id(); 
     $query->set('post__in', $post_ids); 
    } 
    return $query; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルになります。また、任意のプラグインのPHPファイルにもあります。


参考:

関連する問題