【发布时间】:2021-03-20 02:39:35
【问题描述】:
您好,我想在 wordpress 中按浏览次数排序文章帖子类型。所以我在文章帖子类型中添加了一个自定义字段,名称是视图,它是一个数字字段。我用 PODS 添加了它。我在 header.php 中编写了这段代码,因此每个视图都会自动递增:
<?php
if( get_post_type() == 'article' ) {
$postview = intval(get_post_field('views'));
if($postview > 0){
$postview = $postview+1;
}else{
$postview = 1;
}
$postID = $post->ID;
update_post_meta($postID,'views',$postview);
}
?>
成功了。但是当我想通过 elementor 添加高级查询时,它无法按预期工作。我将此添加到functions.php:
add_action( 'elementor/query/popular_articles', function( $query ) {
$query->set('post_type', 'article');
$query->set('meta_key', 'views');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
} );
我也试过这个:
add_action( 'elementor/query/popular_articles', function( $query ) {
$query->set('orderby', 'views');
} );
这些在 elementor 帖子小部件中都没有按预期工作,并且结果未排序。当我设置 Popular_article 查询时。我想用 Wordpress WP_Query 实现的事情是这样的 SQL 查询:
select post_title ,wp_z9gsc7_postmeta.meta_key,wp_z9gsc7_postmeta.meta_value from wp_z9gsc7_posts INNER JOIN wp_z9gsc7_postmeta ON wp_z9gsc7_posts.ID = wp_z9gsc7_postmeta.post_id where wp_z9gsc7_postmeta.meta_key = 'views' ORDER BY wp_z9gsc7_postmeta.meta_value DESC
感谢您提前回复
【问题讨论】:
标签: php mysql sql wordpress elementor