繁体   English   中英

如何通过wordpress中的缩略图存在来显示帖子顺序?

[英]How to display posts order by thumbnail existence in wordpress?

我想通过缩略图显示帖子顺序,即首先显示有缩略图的帖子,然后显示没有缩略图的帖子。

我发现同样的情况#2 这里 ,但是,这并不为我工作。 目前我正在使用目录+主题,我想在其中实现它。

我尝试制作两个循环,一个循环将显示带缩略图的帖子,第二个将显示没有缩略图的帖子。 但是这在分页的情况下不起作用,因为没有缩略图的帖子应该在最后一页上

这是代码

  {var $itemQuery = array(
    'post_type' => 'ait-item',
    'posts_per_page' => $filterCountsSelected,
            //'meta_key'=> '_thumbnail_id',
    'tax_query' => array(
        array(
            'taxonomy' => 'ait-items',
            'field' => 'term_id',
            'terms' => $currentCategory->term_id
        )
    ),
    'paged' => $pagination,
)}

 {customQuery as $query, $itemQuery}

 {* Loop for categories with featured Image*}
  {customLoop from $query as $post}
       {if $post->image}

       //Display post with thumbnail

       {/if}  //end of if

  {/customLoop} //end of loop

 {* Loop for categories without featured Image*}

   {customLoop from $query as $post}
     {if !$post->image}

       //Display post without thumbnail

     {/if}   //end of if

  {/customLoop} //end of loop

  {includePart parts/pagination, location => pagination-below, max => $query->max_num_pages} //includes pagination

编辑查询1:

{var $itemQuery = array( 
  'post_type' => 'ait-item', 
  'posts_per_page' => $filterCountsSelected, 
  'tax_query' => array(
      array(
         'taxonomy' => 'ait-items', 
         'field' => 'term_id',
         'terms' => $currentCategory->term_id 
      )
   ), 
  'paged' => $pagination, 
 )} 

 {var $itemQuery['orderby'] = 'meta_value_num'} 

 {var $itemQuery['meta_query'] = array(
   array(
     'relation' => 'OR', 
     array( 
        'key' => '_thumbnail_id',
        'compare' => 'NOT EXISTS'
      ),
      array( 
         'key' => '_thumbnail_id', 
         'compare' => '!NOT EXISTS' 
      ),
  )
)}

如果post有缩略图然后使用array_multisort,我会通过foreach分配数字变量对它进行排序

试试这个,

function cmk_load_post_by_custom_order() {
    // Query Argument
    $args = array( 
        'post_type' => 'post', 
        'posts_per_page' => 6,
    );
    //Initization Wordpress Query
    $query = new WP_Query( $args ); 
    $posts = $query->get_posts();  

    $output = array();
    $order = array();

    //Ourput result as Custom Array
    foreach( $posts as $post ) { 
        $has_thumb = has_post_thumbnail( $post->ID ) ? 1 : 0 ; 
        $output[] = array( 
            'title' => $post->post_title,
            'slug' => $post->post_name,
            'thumb' => $has_thumb,//get_the_post_thumbnail( $post->ID,'full'), 
        );
        $order[] = $has_thumb;
    }
    array_multisort($order, SORT_DESC, $output);
    echo '<pre>',print_r($output,1),'</pre>';
}
add_action('wp_head','cmk_load_post_by_custom_order');

编辑1

如果您要使用wordpress分页,因为分页依赖于查询对象,上面的答案将不起作用,

我做了一些测试,我已经想出了使用的想法meta_value_num上的orderby然后设置_thumbnail_id为meta_key并添加关系或者这两个_thumbnail_id是空的或没有,因为没有后缩略图将空_thumbnail_id关键。

尝试下面的查询参数

$args = array( 
        'post_type' => 'post', 
        'posts_per_page' => 99,
        'order' => 'DESC', // Display all post with thumbnail ID first 
        'orderby'   => 'meta_value_num', // order by meta key value
        'meta_query' => array(  //query post based on meta key
            array(
                'relation' => 'OR', // add condition if meta key is exists or not
                array(
                    'key' => '_thumbnail_id', 
                    'compare' => 'NOT EXISTS' // include post without _thumbnail_id key
                ),
                array(
                     'key' => '_thumbnail_id', 
                     'compare' => '!NOT EXISTS' // include post with _thumbnail_id key
                )
            )
        )

    );

我在本地测试了它,我得到了以下结果,它查询有和没有缩略图的帖子,我在结果中包含缩略图ID,你可以看到帖子是根据缩略图值排序的

Array
(
    [0] => Array
        (
            [title] => The Magnificent
            [slug] => the-magnificent
            [thumb] => http://dynamized.dev/dyna/wp-content/uploads/2015/09/happy-hour.png
            [tuhmb_id] => 17
        )

    [1] => Array
        (
            [title] => The Awesome Company
            [slug] => the-awesome-company
            [thumb] => http://dynamized.dev/dyna/wp-content/uploads/2015/09/comedy.png
            [tuhmb_id] => 16
        )

    [2] => Array
        (
            [title] => Selfieties
            [slug] => selfieties
            [thumb] => http://dynamized.dev/dyna/wp-content/uploads/2015/09/beverage-store.png
            [tuhmb_id] => 13
        )

    [3] => Array
        (
            [title] => Drunkard
            [slug] => drunkard
            [thumb] => http://dynamized.dev/dyna/wp-content/uploads/2015/09/restaurant31.png
            [tuhmb_id] => 9
        )

    [4] => Array
        (
            [title] => My First Company
            [slug] => my-first-company
            [thumb] => http://dynamized.dev/dyna/wp-content/uploads/2015/09/party.png
            [tuhmb_id] => 7
        )

    [5] => Array
        (
            [title] => No Thumb Compnay
            [slug] => no-thumb-compnay
            [thumb] => 
            [tuhmb_id] => 
        )

)

编辑2

您还可以尝试在orderby上使用数组值并使用meta_value_nummeta_value_numdate显示所有具有缩略图ID的帖子然后按日期排序然后所有帖子没有缩略图ID

将参数参数更改为this,

    'orderby'   => 'date, meta_value_num', // order by meta key value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM