Intereting Posts
защищать отправленные пользователем сообщения Файлы Childs PHP не переписывают файлы PHP родителя Кодекс больше не поддерживается? Как добавить кнопку, которая сохраняет сообщение, затем выполняет функцию Термин специфический признанный пост на страницах архива таксономии Ошибка миграции базы данных Проверьте, зарегистрирован ли пользователь на моем сайте WordPress, который находится на другом сервере pre_get_posts с несколькими запросами Если я обновляю WordPress, мои пользовательские данные будут удалены из таблицы wp_users? Как WordPress рассматривает правила перезаписи «под капотом»? Как я могу создать мета-код таксономии с поисковыми предложениями, но не вводить новые термины? Как запустить тест WordPressMu для WordPress3? Перенос базы данных между двумя версиями WordPress Иерархия категорий в URL-адресе Динамически созданная диаграмма навигации с использованием пользовательских полей

WP Query Post Type с тем же именем таксономии

Это то, что у меня есть:

  • Пользовательский тип сообщения «Книги» с таксонами / категориями «Жанр» и «Автор»
  • Другой пользовательский тип сообщения «Авторы», которые имеют все авторские изображения и биографию.

Это то, что я хочу сделать:

  • На единственной странице «Книга» есть боковая панель с книгами «Автор» и биографией.

Я знаю, как получить «Авторитарную» таксономию «Книги», но мне нужна информация из однотипного типа «Автору». Единственное, что я могу придумать, это то, что слизь для обоих будет одинаковой (т. Е. Если автором книг был «Джон Смит», то таксономия будет «john-smith» и должность, которую мне нужно запросить у моих «авторов» «Пользовательский тип сообщения также будет« john-smith »). Я просто не знаю, как это сделать, или если есть другой способ сделать это.

Я думаю, что это должно быть примерно так:

$bookauthor = wp_get_post_terms($post->ID, 'author', array("fields" => "slug")); $custom_query = new WP_Query(array( 'post_type' => 'authors', 'name' => $bookauthor 

или это:

  $bookauthor = wp_get_post_terms($post->ID, 'author'); $bookauthorslug = $bookauthor[0]->slug; $custom_query = new WP_Query(array( 'post_type' => 'author', 'name' => $bookauthorslug 

Но никто не работает.

Возможно, вы делаете это неправильно.

Когда вам нужно иметь отношение от одного до многих (у одного автора много книг) таксономия – не лучший способ.

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

Например, думает, что если два автора являются омонимами: наличие двух авторов, названных «Джон Смит», совершенно нормально, в этом случае уверен, что WordPress назначит уникальный пул как для таксономического термина, так и для post slug, но для вас будет сложно назначить правильные таксономии при создании почты.

Лучший способ – создать настраиваемое поле для типа публикации книги, которое вы можете назвать «author_id», и где во время создания почтового сообщения вы вставляете идентификатор сообщения righr, после этого на странице книги вы можете использовать:

 $author_id = get_post_meta( $post->ID, 'author_id', true ); $author_post = get_post($author_id); 

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

Если вам нужна помощь в создании метабокса, просмотрите вопросы с тегами metox на этом сайте.

В качестве альтернативы вы также можете рассмотреть хорошо известные плагины Post 2 Posts , которые сделают для вас работу.


Чтобы ответить на ваш вопрос, ваш второй блок кода почти прав, рабочая версия (версия, которая должна работать):

 global $post; $bookauthor = wp_get_post_terms( $post->ID, 'author' ); if ( ! empty($bookauthor) ) { $slug = array_shift( $bookauthor ); $custom_query = new WP_Query( array( 'post_type' => 'author','name' => $slug->slug ) ); // here your loop while ( $custom_query->have_posts() ) { $custom_query->the_post(); // here post output } wp_reset_postdata(); } 

Это потому, что IIRC wp_get_post_terms возвращает массив с использованием термина ids в качестве ключей массива.

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