Получение функции темы для сортировки сообщений по количеству просмотров вместо даты - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь отредактировать эту тему для сортировки отображаемых сообщений по количеству просмотров вместо даты по умолчанию.Я нашел функцию, я просто не уверен, как к ней приблизиться.

В настоящее время она установлена ​​как $ orderby = 'rand' и отображает сообщения в случайном порядке.Что еще я могу сделать для сортировки по количеству просмотров?Например, заменить 'rand' на view_count_variable?

  if ( ! function_exists( 'penci_custom_posts_oderby' ) ) {
          function penci_custom_posts_oderby( $query ) {
              if ( ( $query->is_home() && $query->is_main_query() ) || ( 
      $query->is_archive() && $query->is_main_query() ) ) {
                  $orderby = get_theme_mod( 
      'penci_general_post_oderby' );
                  if( !$orderby ): $orderby = 'rand'; endif;
                  $order = get_theme_mod( 'penci_general_post_order' 
      );
                  if( !$order ): $order = 'DESC'; endif;

                   if( ! function_exists( 'is_woocommerce' ) || ( 
      function_exists( 'is_woocommerce' ) && ! is_woocommerce() ) ) {
                      $query->set( 'orderby', $orderby );
                      $query->set( 'order', $order );
                  }
              }
          }

          add_action('pre_get_posts','penci_custom_posts_oderby');
      } 

Возможно ли использовать мета-ключ поста или?У меня есть функция с именем penci_get_post_views ($ post-> ID), которая возвращает количество просмотров сообщений для всех отдельных сообщений, но я не знаю, как использовать ее в этом контексте.Может кто-нибудь пролить свет на то, как этого добиться?

1 Ответ

0 голосов
/ 21 декабря 2018

Попробуй это.но я не проверял это, так скажите мне, каков результат.

      if ( ! function_exists( 'penci_custom_posts_oderby' ) ) {
          function penci_custom_posts_oderby( $query ) {
              if ( ( $query->is_home() && $query->is_main_query() ) || ( 
      $query->is_archive() && $query->is_main_query() ) ) {
                  $orderby = get_theme_mod( 
      'penci_general_post_oderby' );
                  if( !$orderby ):
                    $query->set( 'meta_key', 'post_views_count' );
                    $orderby = [ 
                      'orderby' => 'meta_value_num',
                      'order' => 'DESC',
                    ];
                  endif;
                  $order = get_theme_mod( 'penci_general_post_order');
                  if( !$order ): $order = 'DESC'; endif;

                   if( ! function_exists( 'is_woocommerce' ) || ( 
      function_exists( 'is_woocommerce' ) && ! is_woocommerce() ) ) {
                      $query->set( 'orderby', $orderby );
                      $query->set( 'order', $order );
                  }
              }
          }

          add_action('pre_get_posts','penci_custom_posts_oderby');
      }
...