WordPress как на ладони

Фильтр порядка

Подскажите как сделать фильтр по порядку. Выводить сперва у кого больше постов

выдаю так

 <?php
  $us_id = $user_ID;
  $user_info = get_userdata( $us_id );

  $args = array('user_id' => $us_id, 'count'   => true, 'status'   => 'approve',); $commratings = get_comments( $args );

	 if ( ! empty( $user_query->results ) ) {
	 foreach ( $user_query->results as $author) {

echo "<li class='spisok-users'>";
echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar($author->ID) . '<p></p><span class="color-pf-green">' . get_the_author_meta ('display_name', $author->ID) . '</span></a><br/><br/>';
echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts($author->ID) . '</span></a>';
echo '</li>';
		}
			} else {
				echo 'Пользователи не найдены';
			}
	 ?>
0
pfilan
2.5 лет назад 24
  • 1
    stepan2278 www.weblancer.net/users/stepanko/?affili...

    https://developer.wordpress.org/reference/classes/wp_user_query/#order-orderby-parameters

    $user_query = new WP_User_Query( array ( 'orderby' => 'post_count', 'order' => 'DESC' ) );

    Я думаю, что все понятно.
    $user_query - когда получаете эту переменную, то там же добавл и тип сортировки.

    Также возможно будет полезно:

    https://wp-kama.ru/function/get_users#orderby

    pfilan 2.5 лет назад

    спасибо большое.

    pfilan 2.5 лет назад

    что-то не получается исключить пользователей без постов.
    фильтр только на исключение по id
    а этот не работает has_published_posts или не правильно делаю

    stepan 2.5 лет назад

    Как вариант, в цикле используйте функцию для проверки наличия постов в $author
    и если нет постов, то continue;
    https://wp-kama.ru/function/count_user_posts

    pfilan 2.5 лет назад

    не получается sad

    stepan 2.5 лет назад

    скиньте код, который вы пишите начиная с этих строк:

    foreach ( $user_query->results as $author) {
    pfilan 2.5 лет назад

    выводи комментов не работаетsmile

        <div class="pf-list">
    			<ul style="display: flow-root;">
    
    			 <?php
    
    			$us_id = $user_ID;
    			$user_info = get_userdata( $us_id );
    
    			$args = array('user_id' => $author->ID, 'count'   => true, 'status'   => 'approve',); $commratings = get_comments( $args );
    			$user_query = new WP_User_Query( array ( 'orderby' => 'post_count', 'order' => 'DESC', '' => ''  )); //фильтр по постам
    
    			 if ( ! empty( $user_query->results ) ) {
    			 foreach ( $user_query->results as $author) {
    
    				  echo "<li class='spisok-users'>";
    				  echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar($author->ID) . '<p></p><span class="color-pf-green">' . get_the_author_meta ('display_name', $author->ID) . '</span></a><br/><br/>';
    				  echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts($author->ID) . '</span></a>';
    				  echo '  <span data-tooltip="Комментариев"> <i class="fa fa-comments-o"></i> ' . $commratings . '</span><br/><br/>';
    				  echo '</li>';
    				}
    					} else {
    						echo '<ol><pre>Пользователи не найдены</pre></ol>';
    					}
    			 ?>
    
    			</ul>
    stepan 2.5 лет назад

    по коду выше: какая проблема ?
    1) "выводи комментов не работает"
    или
    2) "что-то не получается исключить пользователей без постов."

    pfilan 2.5 лет назад

    исключить пользователей без постов."
    Если еще комменты посмотришь буду только рад

    stepan 2.5 лет назад

    код проверен, работает.

    <ul style="display: flow-root;">
    		<?php
    		$user_query  = new WP_User_Query( array( 'orderby' => 'post_count', 'order' => 'DESC', '' => '' ) ); //фильтр по постам
    
    		if ( ! empty( $user_query->results ) ) {
    			foreach ( $user_query->results as $author ) {
    
    				$count_posts = count_user_posts( $author->ID, 'post', true ); // проверка на количество постов
    				if ( ! $count_posts ) {
    					continue;
    				}
    
    				$args        = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', );
    				$commratings = get_comments( $args ); // количество комментов КАЖДОГО автора
    
    				echo "<li class='spisok-users'>";
    				echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar( $author->ID ) . '<p></p><span class="color-pf-green">' . get_the_author_meta( 'display_name', $author->ID ) . '</span></a><br/><br/>';
    				echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts( $author->ID ) . '</span></a>';
    				echo '  <span data-tooltip="Комментариев"> <i class="fa fa-comments-o"></i> ' . $commratings . '</span><br/><br/>';
    				echo '</li>';
    			}
    		}
    		else {
    			echo '<ol><pre>Пользователи не найдены</pre></ol>';
    		}
    		?>
    	</ul>
    pfilan 2.5 лет назад

    спасибо большое. буду изучать дальше.
    фильтр по комментам как и посты буду пробывать сам сделать

    я пытался так сделать 'user_id' => $author->ID, но не работало. буду изучать на примере

    pfilan 2.5 лет назад

    что не так? пытаюсь с комментариями сделать как с постами

        $user_query  = new WP_User_Query( array( 'orderby' => 'count', 'order' => 'DESC' )); //фильтр по постам
    
    			  if ( ! empty( $user_query->results ) ) {
    				foreach ( $user_query->results as $author ) {
    
    				  $commratings = get_comments( $author->ID, 'count', true ); // проверка на количество постов
    				  if ( ! $commratings ) {
    					continue;
    				  }
    
    				  $args        = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', );
    				  $commratings = get_comments( $args ); // количество комментов КАЖДОГО автора
    
    				  echo "<li class='spisok-users'>";
    				  echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar( $author->ID ) . '<p></p><span class="color-pf-green">' . get_the_author_meta( 'display_name', $author->ID ) . '</span></a><br/><br/>';
    				  echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts( $author->ID ) . '</span></a>';
    				  echo '  <span data-tooltip="Комментариев"> <i class="fa fa-comments-o"></i> ' . $commratings . '</span><br/><br/>';
    				  echo '</li>';
    				}
    			  }
    stepan 2.5 лет назад
    foreach ( $user_query->results as $author ) {
    
    	$count_posts = count_user_posts( $author->ID, 'post', true );
    	if ( ! $count_posts ) {
    		continue;
    	}
    
    	$args        = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', );
    	$commratings = get_comments( $args );
    stepan 2.5 лет назад

    http://joxi.ru/E2pnGGyc4kE48r
    невнимательность.
    Поэтому вопросу я отвечать больше не буду.

    pfilan 2.5 лет назад

    хорошо. извени

    pfilan 2.5 лет назад

    да посты я сделал, т.к. ты помог. я комменты пытаюсь сделать

    stepan 2.5 лет назад

    $commratings - в той переменной комменты каждого пользователя-автора.
    Если нужно исключить, то добавл проверку по аналогии.

    если нет комментов, то continue

    pfilan 2.5 лет назад

    спс. ща буду тестить

    pfilan 2.5 лет назад

    ты это имеешь веду ?

      $continue = get_comments( $author->ID, 'count', true ); // проверка на количество постов
    				  if ( ! $continue ) {
    					continue;
    				  }
    pfilan 2.5 лет назад

    опять не внимателен... sad

    pfilan 2.5 лет назад

    я вот так сделал и не хрена

    $user_query  = new WP_User_Query( array( 'orderby' => 'count', 'order' => 'DESC' )); //фильтр по постам
    
    			  if ( ! empty( $user_query->results ) ) {
    				foreach ( $user_query->results as $author ) {
    
    				  $commratings = get_comments( $author->ID, 'count', true ); // проверка на количество постов
    				  if ( ! $commratings ) {
    					continue;
    				  }
    
    				  $args        = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', );
    				  $commratings = get_comments( $args ); // количество комментов КАЖДОГО автора
    pfilan 2.5 лет назад

    вроде так но не пашет

      $comment_content = get_comments( $author->ID, 'count', true ); // проверка на количество постов
    				  if ( ! $comment_content ) {
    					continue;
    				  }
    stepan 2.5 лет назад

    https://wp-kama.ru/function/get_comments
    Параметры для функции СОВСЕМ другие.
    Вы параметры от функции count_user_posts() засунули в get_comments()

    stepan 2.5 лет назад

    ЕЩЕ раз:
    четко задайте вопрос: что НЕ должно выводится в цикле, в котором вы перебираете пользователей?

    pfilan 2.5 лет назад

    я хочу выдать только пользователей у которых комментарии есть.

    pfilan 2.5 лет назад
      $user_query  = new WP_User_Query( array( 'orderby' => 'count', 'order' => 'DESC' )); //фильтр по постам
    
    			  if ( ! empty( $user_query->results ) ) {
    				foreach ( $user_query->results as $author ) {
    
    				  $comment_content = get_comments( $author->ID, 'count', true ); // проверка на количество постов
    				  if ( ! $comment_content ) {
    					continue;
    				  }
    stepan 2.5 лет назад

    Здесь код, что я выше кидал.
    Но добавил комменты и continue, если НЕТ комментов

    <ul style="display: flow-root;">
    	<?php
    	$user_query  = new WP_User_Query( array( 'orderby' => 'post_count', 'order' => 'DESC', '' => '' ) ); //фильтр по постам
    
    	if ( ! empty( $user_query->results ) ) {
    		foreach ( $user_query->results as $author ) {
    
    			$count_posts = count_user_posts( $author->ID, 'post', true ); // проверка на количество постов
    			if ( ! $count_posts ) {
    				continue; // пропускаем пользователя, в которого нет постов
    			}
    
    			$args        = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', );
    			$commratings = get_comments( $args ); // количество комментов КАЖДОГО автора
    			if ( ! $commratings ) {
    				continue; // пропускаем пользователя, в которого нет комментов
    			}
    
    			echo "<li class='spisok-users'>";
    			echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar( $author->ID ) . '<p></p><span class="color-pf-green">' . get_the_author_meta( 'display_name', $author->ID ) . '</span></a><br/><br/>';
    			echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts( $author->ID ) . '</span></a>';
    			echo '  <span data-tooltip="Комментариев"> <i class="fa fa-comments-o"></i> ' . $commratings . '</span><br/><br/>';
    			echo '</li>';
    		}
    	}
    	else {
    		echo '<ol><pre>Пользователи не найдены</pre></ol>';
    	}
    	?>
    </ul>
    pfilan 2.5 лет назад

    я уже запутался. как бы сделал. Спасибо что помог.
    Завтра утром на свежую голову буду изучать и побывать фильтрами поиграться.

    Можешь посоветовать что посмотреть или почитать для таких целий?

    stepan 2.5 лет назад

    Не понятно, что вы понимаете под фильтрами.
    https://wp-kama.ru/handbook/codex/hooks - я сам долго въезжал, что и с чем его едят.
    А так - гугл в помощь.
    А фильтров - очень много.
    Если речь о параметрах запросов - то это нужно смотреть параметры каждой функции.
    На этом сайте они хорошо расписаны.

    pfilan 2.5 лет назад

    Понял спс. завтра почитаю. Я это уже смотрел, но перечитаю

    pfilan 2.5 лет назад

    если интересно, моешь посмотреть что я делаю https://pfilan.ru/account/
    типа профиль пользователя. что-то сам сделал, что-то загулил, что-то помогли.

    уже голова раком )

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация