разместить контент после идентификатора с помощью functions.php - PullRequest
0 голосов
/ 12 октября 2018

Я разрабатываю сайт для своей компании, используя тему WordPress + DivI, это сложно настроить из-за некоторых реализаций системы бронирования и персонализированного CSS, поэтому я создал дочернюю тему, чтобы избежать проблем.Теперь вопрос: есть ли способ с помощью моего дочернего файла functions.php добавить фильтр ловушек, который может размещать контент после определенного идентификатора, например

<li id="first-menu-item">home</li>
//my custom content through functions.php goes here
<li id="second-menu-item">portfolio</li>
<li id="third-menu-item">contacts</li>

Я знаю, что это возможно с помощью jquery таким образом

<script type="text/javascript"> 
jQuery(document).ready(function(){
jQuery ( '#first-menu.item' ) .after( '<li>my custom content</li>' );
});
</script>

и это работает, но я думаю, что это не правильный путь, потому что после этого конкретного идентификатора я хочу разместить только HTML-код для заметок, но функцию поиска в WordPress, и я думаю, что это неправильночто я могу поместить теги php в jquery .. поэтому я должен добавить это

<?php get_search_form(); ?>

непосредственно в мой header.php, но я хочу избежать этого, потому что develepors divi может обновить файл header.phpи мне нужно снова отредактировать мой дочерний файл header.php, поэтому я должен сделать это через мой дочерний файл function.php ... Я обнаружил, что WordPress имеет другой хук фильтра для создания такого типа, как "wp_nav_menu_items", но что, если я хочу поместить код послеконкретная строка / div / id / class?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

действительно спасибо за ваш ответ. Я хочу, чтобы после последнего элемента меню в единственной мобильной версии отображалось поле поиска, по умолчанию это отображается, когда вы нажимаете значок в правом верхнем углу, но у меня естьОчень странный широкий логотип и языковые флаги, которые занимают все пространство, поэтому я хочу поместить окно поиска в полноэкранное мобильное меню под последним элементом.Я пытаюсь понять ваш код, и мне просто интересно, есть ли способ поместить код после определенного идентификатора div в файл header.php, но вы говорите мне использовать wp_get_nav_menu_items, который является фильтром для меню навигациине для класса или идентификатора, я думаю, что это немного отличается от того, что я просил .. Я прошу это также для других реализаций

пример

0 голосов
/ 12 октября 2018

Это можно сделать с помощью пользовательской вспомогательной функции и добавления фильтра в «wp_get_nav_menu_items».Ниже приведена пользовательская вспомогательная функция, которую вы можете использовать.

function _custom_nav_menu_item( $title, $url, $order, $parent = 0 ){
  $item = new stdClass();
  $item->ID = 1000000 + $order + parent;
  $item->db_id = $item->ID;
  $item->title = $title;
  $item->url = $url;
  $item->menu_order = $order;
  $item->menu_item_parent = $parent;
  $item->type = '';
  $item->object = '';
  $item->object_id = '';
  $item->classes = array();
  $item->target = '';
  $item->attr_title = '';
  $item->description = '';
  $item->xfn = '';
  $item->status = '';
  return $item;
}

И вот как вы можете добавить фильтр.

add_filter( 'wp_get_nav_menu_items', 'your_custom_function', 20, 2 );
function your_custom_function( $items, $menu ){
  //your logic and code for customization
  return $items;
}

У вас будет собственная логика для определения правильного местоположения.Я успешно использовал это с темой Divi.

Надеюсь, это даст вам хотя бы отправную точку.Что ж, мне интересно, почему вы хотите добавить форму поиска в навигационные меню!

===== Обновление =====

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

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

У меня естьЯ использовал этот плагин много раз на многих сайтах, и его результаты достаточно надежны.Вы можете условно включить пользовательскую функциональность, используя функцию «is_mobile ()» из этого плагина, поэтому вам не нужно полагаться на css, чтобы скрыть то же самое на настольных устройствах.

...