Order Posts By Youtube Views

时间:2016-07-05 作者:Stanley Umeanozie

我有一个wordpress网站,我在那里发布歌词。我写了一个wp查询来列出特定的帖子并按帖子视图排序。然而,我想通过youtube视图来订购它们。

我已经能够获得帖子(歌曲)的youtube视图计数,问题是用它来排序帖子。代码如下所示:-

<ul>
<?php $item=0;  $loop = new WP_Query( array( \'post_type\' => \'lyrics\', \'date_query\' => array( array( \'after\' => \'1 month ago\' ) ), \'post_status\'=> \'publish\', \'meta_key\' => \'post_view_count\', \'orderby\' => \'meta_value\', \'posts_per_page\' => 10 ) );
            while ( $loop->have_posts() ) : $loop->the_post();
            $song_name = get_the_title();

/*YOUTUBE QUERY HERE*/
$Yviews = 1234;

<li>
<?php echo esc_attr($song_name).\' (\'.$Yviews.\' views)\'; ?>
</li>
     <?php endwhile; wp_reset_query(); ?>

Things I Have Tried

我创建了一个自定义字段,并尝试用update_post_meta(get_the_ID(), \'youtube_views\', $Yviews); 和已更改\'meta_key\' => \'post_view_count\'\'meta_key\' => \'youtube_views\' 但这要么不起作用,要么我做得不好。

我如何做到这一点?

PS:归根结底,我想排序的是帖子浏览量和youtube浏览量的总和,但我可以没有这些。

提前谢谢。

PS:为了使代码尽可能简单,我省略了youtube api查询。

2 个回复
SO网友:Salem Terrano

https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

<ul>
<?php 
$item=0;  

$attr = array( 
  \'post_type\' => \'lyrics\', 
  \'date_query\' => array( array( \'after\' => \'1 month ago\' ) ), 
  \'post_status\'=> \'publish\', 
  \'meta_key\'       => \'youtube_views\', 
  \'orderby\'        => \'meta_value\',
  \'order\'          => \'DESC\',
  \'posts_per_page\' => 10 
);

$loop = new WP_Query( $attr );
while ( $loop->have_posts() ) : $loop->the_post();
  $song_name = get_the_title();

    /*YOUTUBE QUERY HERE*/
//    $Yviews = 1234;

    ?>
    <li>
    <?php echo esc_attr($song_name).\' (\'.$Yviews.\' views)\'; ?>
    </li>
  <?php endwhile; wp_reset_query(); ?>
</ul>
SO网友:knif3r

要按元字段排序帖子,您需要以下内容:

$args = array(
    "meta_query" => array(
        array(
            "key" => "youtube-views",
        ),
    ),
    "orderby" => "meta_value"
);
当您应该使用数据库列的名称作为键时,通常应该在键-值对中指定,但您应该只能将其与键一起使用,但需要对其进行测试。