Я испытываю затруднения при получении сообщения термином в пользовательской таксономии, которую я настроил. Выгода, это является многоузловым, и я получаю эти данные из другого блога в сети, где таксономия регистрируется. Код, который я имею, хорошо работает на блоге, в котором регистрируется таксономия. Однако, когда я пробую тот же код другого блога с помощью switch_to_blog, я получаю bool (ложь). При значении я предполагаю, что существует ошибка в sql. Однако, если я просто делаю is_term, я могу подтвердить, что это там. Вот ссылка на код, который работает над блогом naitive, но не другим,
<?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),
Кроме того, это не производит ничего вообще даже с print_r(var_dump($my_query->request));
Решение (или по крайней мере частично)
Проблема switch_to_blog
не предоставляет Вам доступ ко всему в другом блоге в сети включая taxonomies, теги, вещи в Вашем functions.php, хотя не заключают мне в кавычки 100% на этом. Поэтому таксономия не была зарегистрирована в "коммутируемый для" блоггинга. Мое решение (по крайней мере на данный момент) регистрирует таксономию в том блоге. После выполнения этого, tax_query
работавший как ожидалось. Это - то, что я иду с тем, пока я не нахожу лучшее решение (если Вы существуете вообще).
Решение (или по крайней мере частично)
Проблемой является switch_to_blog, не предоставляет Вам доступ ко всему в другом блоге в сети включая taxonomies, теги, вещи в Вашем functions.php, хотя не заключают мне в кавычки 100% на этом. Поэтому таксономия не была зарегистрирована в "коммутируемый для" блоггинга. Мое решение (по крайней мере на данный момент) регистрирует таксономию в том блоге. После выполнения этого tax_query работал как ожидалось. Это - то, что я иду с тем, пока я не нахожу лучшее решение (если Вы существуете вообще).
Это - съемка общим планом и предполагает, что все Ваши taxonomies являются установкой и запрашиваемый правильно.
Но так как Вы используете 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 поле установлено на идентификатор не, откладывают. Измените свой $args на..
$args = array(
'post_type' => $type,
'posts_per_page' => 6,
'paged' => $paged,
'tax_query' =>
array(
array(
'taxonomy' => 'warrant_status',
'field' => 'slug',
'terms' => 'most-wanted',
)
)
);
tax_query
в $args. У меня есть оба WP_Query
и query_posts()
работа пока tax_query
не находится в аргументах.
– jerime
03.05.2013, 23:58
$my_query
потому что это - новое WP_Query
возразите, что OP создал. Почему Вы когда-либо рекомендовали бы query_posts
? Особенно по созданию нового WP_Query
объект?
– s_ha_dum
04.05.2013, 00:23
Та же проблема, мое решение:
$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
};