我以前有这个代码来显示帖子。
$query_args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 4,
\'meta_key\' => \'Views\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'ignore_sticky_posts\' => true
);
$the_query = new WP_Query( $query_args );
if( $the_query->have_posts() )
{
while( $the_query->have_posts() )
{
$the_query->the_post();
echo \'<a class="popularPostLinks" href="\' . get_the_permalink() . \'" rel="external" target="_blank">\' . get_the_post_thumbnail() . \'
<br>
<div>
<p>\' . get_the_title() . \'</p>
</div>
</a>\';
}
}
else
{
// No posts found.
}
// Restore original post data.
wp_reset_postdata();
但现在我正在使用自定义查询:
$getAllTimeRows = $wpdb->get_results( $wpdb->prepare( "SELECT post_id, SUM( post_value ) AS \'Views\' FROM {$wpdb->prefix}PopularPosts GROUP BY post_id ORDER BY Views DESC LIMIT 4" ) );
我如何使用上面的数组结果来显示帖子,就像WP Query显示帖子一样?这个
$getAllTimeRows
包含行(最多4行)以显示(最多4行)帖子。请参见下面的阵列。
print_r ( $getAllTimeRows )
Array
(
[0] => stdClass Object
(
[post_id] => 213
[Views] => 16
)
[1] => stdClass Object
(
[post_id] => 215
[Views] => 11
)
[2] => stdClass Object
(
[post_id] => 217
[Views] => 9
)
[3] => stdClass Object
(
[post_id] => 227
[Views] => 7
)
)
最合适的回答,由SO网友:Robert hue 整理而成
通过从PHP数组输出值,可以得到相同的结果。由于它是多列数组,因此需要运行foreach
循环并获取每个子项的值。
大多数情况下,它是标准的PHP内容,没有什么特别之处。虽然之前您不需要在每个WordPress函数中提供post ID,因为您在循环中使用它,但现在您必须这样做。
这里是输出。
foreach( $getAllTimeRows as $getAllTimeRow ) {
$post_id_num = $getAllTimeRow->post_id;
echo \'<a class="popularPostLinks" href="\' . get_permalink( $post_id_num ) . \'" rel="external" target="_blank">\' . get_the_post_thumbnail( $post_id_num ) . \'<br>
<div>
<p>\' . get_the_title( $post_id_num ) . \'</p>
</div>
</a>\';
}