Intereting Posts
Динамические ссылки на изображения в зависимости от версии Expression / 'Single Post' Как отредактировать / удалить термин, который находится в нескольких таксономии? Цикл для сопоставления таксономических терминов для «связанных» постов? Пользовательский репозиторий Тема и плагин WordPress Как отобразить список дочерних страниц с родителем в wordpress? Автоматическое добавление # в подменю Добавить атрибут id для ссылок на дочерние страницы Как подключиться к функции редактирования изображения редактора изображений? Пользовательские роли с возможностью, основанной на дате Style.css в дочерней теме загружается перед загрузкой Выполнять js-файлы, похоже, не работают Разделить контент и галерею Где создается экземпляр WP_Query (при работе с темами)? Фиксирование медиа-ссылок после импорта в многопользовательский wp_editor на входе изменяется содержимое

Получать сообщение по термину из пользовательской таксономии в другом блоге в сети?

У меня возникли проблемы с получением почтовых сообщений в пользовательской таксономии, которую я создал. Улов это многоузловое, и я получаю эти данные из другого блога в сети, где зарегистрирована таксономия. Код, который у меня работает, отлично работает в блоге, на котором зарегистрирована таксономия. Однако, когда я пытаюсь использовать тот же код в другом блоге с помощью switch_to_blog, я получаю bool (false). Смысл, я думаю, что в sql есть ошибка. Однако, если я просто сделаю is_term, я могу подтвердить, что он есть. Вот ссылка на код, который работает над наивным блогом, но не с другим,

<?php get_header(); ?> <?php global $switched; switch_to_blog(2); ?> <div class="row-fluid mostwanted-container"> <?php $type = 'portal_warrants'; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $terms = is_term( 'most-wanted' , 'warrant_status' ); $args=array( 'post_type' => $type, 'posts_per_page' => 6, 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'warrant_status', 'field' => 'id', 'terms' => 'most-wanted', ) ) ); $my_query = null; $my_query = new WP_Query($args); $i = 0; if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); if( $i % 3 == 0) :?> </div> <div class="row-fluid mostwanted-container"> <?php endif; ?> <?php print_r(var_dump($wp_query->request)); ?> <div class="span4 wanted"> <h1>Wanted</h1> <div class="mostwanted-img"> <img src="http://placehold.it/150x170"> <span class="arrested">Arrested</span> </div> <div class="mostwanted-info"> <h3><?php the_title(); ?></h3> <ul> <li><strong>Last Known Address:</strong></li> <li><strong>Hair:</strong></li> <li><strong>Eyes:</strong></li> <li><strong>Height:</strong></li> <li><strong>Weight:</strong></li> </ul> </div> </div> <?php $i++ ?> <?php endwhile; } wp_reset_query(); ?> </div> <?php restore_current_blog(); ?> <?php get_footer(); ?> 

* Редактировать (обновленный pastebin с включенным switch_to_blog)

http://pastebin.com/uBbaXnSt

Кроме того, это вообще ничего не выводит даже с помощью print_r(var_dump($my_query->request));


Решение (или, по крайней мере, частично)


Проблема заключается в том, что switch_to_blog не дает вам доступ ко всему в другом блоге в сети, включая таксономии, теги, вещи в ваших functions.php, хотя не цитируйте меня на 100%. Поэтому таксономия не была зарегистрирована в блоке «переключилась». Мое решение (по крайней мере пока) регистрирует таксономию в этом блоге. После этого tax_query работал tax_query . Это то, что я собираюсь, пока не найду лучшее решение (если оно вообще существует).

Solutions Collecting From Web of "Получать сообщение по термину из пользовательской таксономии в другом блоге в сети?"

Я нашел небольшой хак для фильтрации по таксономии, не создавая таксономии в детской теме.

В ядре существует функция « taxonomy_exists »:

 function taxonomy_exists( $taxonomy ) { global $wp_taxonomies; return isset( $wp_taxonomies[$taxonomy] ); } 

И есть ли эта функция, которая улит «ложь», потому что таксономия не существует в вашей детской теме. Если эта функция дает «ложь», класс « WP_Tax_Query » не вернет действительный SQL для фильтрации по таксономии.

Итак, как @jerime говорит: «Мое решение (по крайней мере пока) регистрирует таксономию в этом блоге».

Вы можете «создать» таксономию только для этого фильтра, например:

 // Add this before the loop // The if is to don't touch the taxonomy if is a real taxonomy // The "delete" value is to know this is not a real taxonomy global $wp_taxonomies; if(!taxonomy_exists('warrant_status')) $wp_taxonomies['warrant_status'] = 'delete'; // The normal loop $args=array( 'post_type' => $type, 'posts_per_page' => 6, 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'warrant_status', 'field' => 'id', 'terms' => 'most-wanted', ) ) ); $my_query = null; $my_query = new WP_Query($args); // After finish the loop, remove the hack // do the if to don't delete a real taxonomy if ($wp_taxonomies['warrant_status'] == 'delete') unset($wp_taxonomies['warrant_status']) 

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

Но поскольку вы используете wp_reset_query() попробуйте использовать query_posts() с вашими $args и используйте while(have_posts() : the_post()) вместо того, чтобы выполнять новый WP_Query() . Затем restore_current_blog() перед вашим wp_reset_query() в конце.

Также ваш var_dump не работает, потому что его $wp_query не $my_query . Если вы хотите увидеть var_dump объекта $wp_query вам понадобится global $wp_query; где-то перед первым.

Лучший ответ ..

Не знаю, почему я этого не заметил раньше. В вашем поле tax_query установлено значение id not slug. Измените свои $ args на ..

 $args = array( 'post_type' => $type, 'posts_per_page' => 6, 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'warrant_status', 'field' => 'slug', 'terms' => 'most-wanted', ) ) ); 

Решение (или, по крайней мере, частично)

Проблема заключается в том, что switch_to_blog не дает вам доступ ко всему в другом блоге в сети, включая таксономии, теги, вещи в ваших functions.php, хотя не цитируйте меня на 100%. Поэтому таксономия не была зарегистрирована в блоке «переключилась». Мое решение (по крайней мере пока) регистрирует таксономию в этом блоге. После этого tax_query работал должным образом. Это то, что я собираюсь, пока не найду лучшее решение (если оно вообще существует).

Такая же проблема, мое решение:

 $queryterms = " SELECT * FROM wp_".$site->blog_id."_terms terms, wp_".$site->blog_id."_term_taxonomy term_taxonomy, wp_".$site->blog_id."_term_relationships term_relationships WHERE (terms.term_id = term_taxonomy.term_id AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id) AND term_relationships.object_id = ".$post->ID." "; $terms = $wpdb->get_results($queryterms, OBJECT); foreach ($terms as $term) { // Your stuff };