Intereting Posts
как создать собственный код или шаблон страницы администратора edit.php для моего пользовательского типа сообщений Новые категории теперь собираются до 404s Как добавить супер администратора ко всем сайтам Получить все условия для массива сообщений Помощь с $ wpdb MySQL Query Только названия продуктов WooCommerce Я хочу отключить верификацию / активацию E-Mail, когда пользователь подписывается на мой сайт WordPress предотвращение дублирования wp_insert_post Получение соответствия всех идентификаторов заголовку в пользовательском типе сообщений Как получить сообщение, когда сообщение отправлено Как разрешить комментаторам получать уведомления о ответах на свои комментарии? Дублировать «стандартную» форму с помощью jQuery Комментарии Disqus и сценарий pingback – как изменить порядок? Неопределенное свойство: WP_Query :: $ post Отмена регистрации и регистрация плагина javascript breaks

qTranslate: Скрыть нетранслируемый контент

Я знаю, что qTranslate имеет возможность скрывать нетранслируемый контент, но это, похоже, не работает. Т.е.: У меня есть веб-сайт с тремя языками: голландский, французский и английский. Существует одна конкретная страница с некоторыми подстраницами, которые доступны только на голландском языке. Я хочу, чтобы они появились на голландском веб-сайте, но полностью спрятали их с французского и английского сайтов. Вот так:

  • MenuItem1
  • MenuItem2
    • MenuItem2.1
    • MenuItem2.2
  • MenuItem3

Таким образом, MenuItem2 и его подстраницы доступны только на голландском языке. Я хочу, чтобы они были скрыты на английском / французском веб-сайте.

Возможно ли это с qTranslate или другим плагином? Или есть кусок кода, который позволит это?

Благодарю.

Solutions Collecting From Web of "qTranslate: Скрыть нетранслируемый контент"

Это может помочь: http://www.gish.se/wg-qtranslate.zip – загрузить и установить, а затем исправить плагин, изменив:

foreach($content as $language => $lang_text) { $lang_text = trim($lang_text); if(!empty($lang_text)) $languages[] = $language ; } 

в

 foreach($content as $lang => $lang_text) { $lang_text = trim($lang_text); if(!empty($lang_text)) $languages[] = $lang ; } 

взятый из http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=3&t=2958 , работает в большинстве случаев

Маленький взлом в моем подменю:

 function hierarchical_submenu($post) { $top_post = $post; // If the post has ancestors, get its ultimate parent and make that the top post if ($post->post_parent && $post->ancestors) { $top_post = get_post(end($post->ancestors)); } // Always start traversing from the top of the tree return hierarchical_submenu_get_children($top_post, $post); } function hierarchical_submenu_get_children($post, $current_page) { $menu = ''; // Get all immediate children of this page $children = get_pages('child_of=' . $post->ID . '&parent=' . $post->ID . '&sort_column=menu_order&sort_order=ASC'); if ($children) { $menu = "\n<ul>\n"; foreach ($children as $child) { // If the child is the viewed page or one of its ancestors, highlight it if (in_array($child->ID, get_post_ancestors($current_page)) || ($child->ID == $current_page->ID)) { $menu .= '<li class="active"><a href="' . get_permalink($child) . '" class="first-li active">' . $child->post_title . '</a>'; } else { if (strcmp($child->post_title, " ")) { $menu .= '<li><a href="' . get_permalink($child) . '">' . $child->post_title . '</a>'; } } // If the page has children and is the viewed page or one of its ancestors, get its children if (get_children($child->ID) && (in_array($child->ID, get_post_ancestors($current_page)) || ($child->ID == $current_page->ID))) { $menu .= hierarchical_submenu_get_children($child, $current_page); } $menu .= "</li>\n"; } $menu .= "</ul>\n"; } return $menu; } 

Добавлено

 if (strcmp($child->post_title, " ")) { $menu .= '<li><a href="' . get_permalink($child) . '">' . $child->post_title . '</a>'; } 

Если структура здесь.

Я создаю очень простой плагин, который позволяет скрывать элементы меню на некоторых языках, но показывать их на других.
После установки моего плагина и включения его вам просто нужно удалить заголовок с нежелательного языка, но оставите строку в других.
Например, если вы хотите показать «Профиль компании» только в английском меню, но не во французском меню (или на любом другом языке), вы устанавливаете заголовок пункта меню: «Профиль компании».
Поведение qTranslate по умолчанию даст вам пункт «Профиль компании (английский)» во французском меню.
Наслаждайтесь: http://www.hoojima.com/wordpress/qtranslate-remove-menu-item.zip

Я сделал следующее в functions.php моей темы:

 if (function_exists('qtrans_getLanguage')): function mytheme_qt_menu_filter($items) { $filtered = array(); foreach ($items as $item) { // TODO Not sure what happens when object_id == ID, which happens if // not linking to post (eg external link). if (qtrans_isAvailableIn($item->object_id, qtrans_getLanguage())) $filtered[] = $item; } return $filtered; } add_filter('wp_get_nav_menu_items', 'na_qt_menu_filter'); endif; 

Кажется, это работает в моем случае 🙂