Intereting Posts
укажите условие meta_key / meta_value для prev_post_link и next_post_link Экспорт и импорт моей базы данных WordPress, но ни один из параметров плагина не импортирует Архив с разбивкой по таксономии с разбивкой по страницам, включая одну должность за период Диагностика конфликтов плагина Сообщение об отправке формы Ajax по пользовательским полям Как включить или отключить разбиение на страницы в результатах поиска и списках категорий по ссылке? Пользовательские поля метаданных для изменения сгенерированного образа HTML, который вставляется в сообщение для моего анимированного проигрывателя изображений GIF? Страница корзины отображает цену и сумму как ноль, независимо от введенной цены add_theme_support ('title-tag') в конфликте с пользовательскими функциями заголовков Перенаправление одного мультисайта в другой Как добавить пользовательскую цепочку таксономии в CPT permalink? Как я могу добавить кнопку рядом с кнопкой «редактировать изображение» в «Детали приложения», запрос пользовательских закладок из большого количества закладок Где скрывается короткий код? Несколько сайтов WordPress съедают много ОЗУ

Получить теги для текущего пользователя

Как я могу получить список пользовательских тегов, я получаю список всех тегов с этим:

<?php $tags = get_tags(); ?> <?php if (isset($tags)): ?> <ul> <?php foreach ($tags as $tag): ?> <li><?php echo $tag->name; ?></li> <?php endforeach ?> </ul> <?php endif ?> 

Это вернет мне список всех используемых тегов на моей странице WordPress.

Мой вопрос: как я могу получить только теги, назначенные для сообщений, написанных зарегистрированным пользователем?

Solutions Collecting From Web of "Получить теги для текущего пользователя"

Зарегистрированный пользователь

Объект / экземпляр \WP_User может быть извлечен через:

 $user = get_current_user(); 

Для получения идентификатора есть ярлык API-интерфейса ярлыка:

 $user_id = get_current_user_id(); 

$wpdb и WP "DBAL"

WP в основном использует $wpdb как DBAL / Database Abstraction Layer. Он получил множество публичных методов и некоторые более высокоуровневые обертки для удобного доступа. Один из них – get_posts_by_author_sql() :

 var_dump( get_posts_by_author_sql( 'post', true, get_current_user_id() ) ); # Result: string 'WHERE post_author = 1 AND post_type = 'post' AND (post_status = 'publish' OR post_status = 'private')' (length=101) 

Если вы просто хотите публичные сообщения, используйте 4-й аргумент и установите для него значение true .

Следующим шагом будет построение полного запроса:

 $sql = "select {$wpdb->posts}.id from {$wpdb->posts} ".get_posts_by_author_sql( 'post', true, get_current_user_id() ); 

Теперь вы можете $wpdb это на $wpdb запросе. Не забудьте только условно включить режим отладки. Также не добавляйте отладочную ссылку на сайт в реальном времени, так как статически кэшированные сайты могут печатать ваши учетные данные БД для публики в течение некоторого времени.

 /** @var \wpdb $wpdb */ global $wpdb; if ( defined( 'WP_DEBUG' ) and WP_DEBUG and defined( 'WP_DEBUG_DISPLAY' ) and WP_DEBUG_DISPLAY ) $wpdb->show_errors(); $posts = $wpdb->get_results( $sql ); // Filter out only the post IDs and build an array from the result: $posts = wp_list_pluck( $posts, 'id' ); 

Теперь нам нужно только получить теги. Затем мы создаем новый массив и собираем теги, упорядоченные по идентификаторам почтовых сообщений. Это может привести к дублированию тегов. Если вы этого не хотите, вам придется реализовать другой механизм сортировки и выборки. Это не так сложно, так как вы можете легко срывать термины на основе свойства object_id которое на самом деле просто является идентификатором сообщения.

 $tags = []; foreach ( $posts as $post_id ) $tags[ $post_id ] = get_the_tags( $post_id ); var_dump( $tags ); 

Имейте в виду, что до PHP v5.4 вам понадобится array() вместо синтаксиса короткого массива [] .

Результат будет выглядеть следующим образом, и вы получите возвращаемые цели с полным сроком.

 array (size=13) 167 => array (size=16) 50 => object(stdClass)[50] public 'term_id' => int 50 public 'name' => string '8BIT' (length=4) public 'slug' => string '8bit' (length=4) public 'term_group' => int 0 public 'term_taxonomy_id' => int 50 public 'taxonomy' => string 'post_tag' (length=8) public 'description' => string 'Tags posts about 8BIT.' (length=22) public 'parent' => int 0 public 'count' => int 1 public 'object_id' => int 167 public 'filter' => string 'raw' (length=3) 51 => object(stdClass)[10] public 'term_id' => int 51 public 'name' => string 'Articles' (length=8) public 'slug' => string 'articles' (length=8) public 'term_group' => int 0 ... 

Количество сообщений

Чтобы получить количество сообщений, написанных в настоящее время пользователем, используйте:

 $count = count_user_posts( get_current_user_id() ); // Will return an integer