#php #mysql #sql #wordpress #elementor
#php #mysql #sql #wordpress #элементор
Вопрос:
здравствуйте, я хотел упорядочить тип публикации статей по количеству просмотров в WordPress. итак, я добавил настраиваемое поле в тип публикации статьи, имя которого — view, и это числовое поле. Я добавил его с помощью 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 posts, и результат не сортируется. когда я задаю запрос 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
заранее благодарим вас за ответ
Ответ №1:
это сработало:
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');
$query->set('offset', 0);
} );