У меня есть кое-что об этом на форумах поддержки WPML, но я подумал, что могу спросить и здесь. Вот важная информация: я запускаю настройку WP Multisite с пользовательскими типами записей, пользовательскими полями, пользовательскими настройками - все, что кажется. В конкретном файле шаблона у меня есть вторичный цикл, который извлекает список элементов из другого блога. Из того, что я понял, все, что использует WP API, должно быть отфильтровано только до текущего языка, но ни одна из WP_Query()
функций, которые у меня есть, не выполняет этого.
Соответствующий код:
<?php
switch_to_blog(23);
$args = array('post_type' => 'release-notes',
'suppress_filters' => 0,
'meta_query' => array(
array(
'key' => 'related_products',
'value' => $thisproduct,
'compare' => 'LIKE'
)
)
);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
echo '<h2>Release Notes</h2>';
while ( $loop->have_posts() ) : $loop->the_post();
//echo '<pre>';
//print_r($post);
//echo '</pre>';
$post_link = ($post->post_name);
echo '<p><a class="text-link" href="' . get_permalink() . '">' . get_the_title() . '</a></p>';
endwhile; // foreach($posts
} // if ($results
restore_current_blog();
?>
Проблема здесь двоякая: во-первых, он возвращает результаты с каждого языка вместо текущего языка - один и тот же пост, три раза (EN, FR, DE). Во-вторых, результат get_permalink()
полностью неверен - он выплевывает http://www.mysite.com/blog23name/postname вместо http://www.mysite.com/blog23name/lang/posttype/postname - пользовательскую постоянную ссылку, показанную на страница «Редактировать пост».
Любые идеи?
источник
switch_to_blog()
она не пропускает постоянные ссылки для пользовательских типов записей,get_permalink()
что делает это отличным местом для обсуждения. Спасибо за отрицательное голосование, однако, это намного более полезно, чем на самом деле придумать ответ на двухмесячный вопрос.Ответы:
Мое решение состояло в том, чтобы зарегистрировать пользовательские типы сообщений на сайте, с которого я их вызываю, а затем в настройках WPML установите их для перевода. Это в WPML -> Управление переводами -> Настройка многоязычного контента, внизу. Я предполагаю, что это работает, обманывая WP в использовании правил переписывания / перевода этого сайта, когда на нем нет нужной информации
switch_to_blog()
.источник