2015-02-06 2 views
1

У меня есть WordPress, установленный на моем сайте, и в настоящее время редактирую тему.jQuery генерирует PHP внутри HTML-комментариев (WORDPRESS)

Я добавил элемент списка в конец сгенерированного меню навигации. Внутри элемента списка находится блок PHP, который вызывает форму поиска.

Проблема, с которой я сталкиваюсь, заключается в добавлении элемента списка, блок PHP помещается внутри тегов комментариев HTML. Я не знаю, почему и попробовал несколько способов избавиться от него.

<li> 
    <!--?php get_search_form(); ?--> 
</li> 

JavaScript Я использовал, чтобы добавить элемент списка и панель поиска является:

$(document).ready(function() { 
    "use strict"; 

    $("header nav .nav-menu").append("<li><?php get_search_form(); ?></li>"); 
}); 

WordPress генерирует информацию в шаблоне заголовка с помощью этого:

<nav id="site-navigation" class="main-navigation" role="navigation"> 
      <div class="wrapper2"> 
       <button class="menu-toggle"><?php _e('Menu', 'twentytwelve'); ?></button> 
       <a class="assistive-text" href="#content" title="<?php esc_attr_e('Skip to content', 'twentytwelve'); ?>"><?php _e('Skip to content', 'twentytwelve'); ?></a> 
       <?php wp_nav_menu(array('theme_location' => 'primary', 'menu_class' => 'nav-menu')); ?> 

      </div> 
     </nav> 

от моего прибегая к помощи моего Предполагаю, что я вложен PHP в PHP, но я не смог его исправить.

переменная PHP, которая сохраняет форму поиска HTML является:

$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . esc_url(home_url('/')) . '"> 
       <div> 
        <label class="screen-reader-text" for="s">' . _x('Search for:', 'label') . '</label> 
        <input type="text" value="' . get_search_query() . '" name="s" id="s" placeHolder="Enter your search here..." /> 
        <input type="submit" id="searchsubmit" value="'. esc_attr_x('&#59394;', 'submit button') .'" /> 
       </div> 
      </form>'; 

Я был бы признателен за любую помощь или понимание, так как я не привык работать с PHP или WordPress темы.

+0

У вас есть searchform.php в папке темы? – w3bMak3r

+0

Да, у меня есть один –

+0

Функция сначала переходит к этому файлу. Что находится в файле, это прокомментированный код? – w3bMak3r

ответ

0

Хорошо, я хотел бы поблагодарить Playground для объяснения, почему моя идея использования JavaScript не будет работать.

Также спасибо w3bmak3r за сообщение о внешнем JS-файле и ссылку на функцию search_form на сайте wordpress.

Моя цель состояла в том, чтобы добавить строку поиска в конце списка навигации. Я выполнил это, добавив элемент списка в начале списка навигации. Я нашел информацию here on wordpress.

От:

<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_class' => 'nav-menu')); ?> 

To:

<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_class' => 'nav-menu', 'items_wrap' => '<ul id="menu-site" class="nav-menu" style=""><li class="thesearchform">' . get_search_form() . '</li>%3$s</ul>')); ?> 

Далее я использовал JQuery для добавления первого элемента списка в качестве последнего ребенка:

$(document).ready(function() { 
    "use strict"; 

    var theSearchForm = $("header nav li.thesearchform"); 
    $("header nav .nav-menu").append(theSearchForm).find(theSearchForm).append($("header nav .searchform")); 
}); 

Так что да, это работает , Спасибо, что помогли мне.

Редактировать: Если кто знает, как я могу вставить <?php get_search_form(); ?> в wp_nav_menu, это поможет мне сделать его доступным для чтения.

Редактировать, невзирая, я понял это и отредактировал ответ.

1

Я не понимаю, что вы пытаетесь сделать здесь ....

Ваш Javascript не имеет никакого смысла. Javascript выполняется на стороне клиента, а PHP - на стороне сервера, то есть в момент запуска вашего javascript, добавляя php-вызов в html, ничего не будет делать, кроме как вставлять текст в него, ничего не выполняя ....

любой php-код должен идти в шаблоне, а не в каком-либо javascript, если только некоторые данные не передаются в переменную javascript.

+0

Я не из тех, кто голосует за голос, но это не помогает. и есть много тем WordPress, которые делают это таким образом – w3bMak3r

+1

Я предполагал, что код будет срабатывать, как правило, как HTML-теги. –

+0

@BlackyWolf это – w3bMak3r

0

Попробуйте это.

Проверьте, есть ли у вас файл searchearchform.php. Если вы это сделаете, это переопределит эту функцию. get_search_form() сначала извлекает из этого файла.

В корень вашей темы добавьте или измените файл searchform.php.

В этом файле добавить код для формы:

<form role="search" method="get" id="searchform" class="searchform" action="' . esc_url(home_url('/')) . '"> 
      <div> 
       <label class="screen-reader-text" for="s">' . _x('Search for:', 'label') . '</label> 
       <input type="text" value="' . get_search_query() . '" name="s" id="s" placeHolder="Enter your search here..." /> 
       <input type="submit" id="searchsubmit" value="'. esc_attr_x('&#59394;', 'submit button') .'" /> 
      </div> 
</form> 

Вы также отсутствует эхо перед get_search_form();

Ваш JS должен быть:

$(document).ready(function() { 
    "use strict"; 

    $("header nav .nav-menu").append("<li><?php echo get_search_form(); ?></li>"); 
}); 

Наконец ваш JS находится в .php права файла? Это будет работать и выполняется в некоторых темах, если вы можете, хотя вы должны попытаться избежать смешивания вашего php и javascript. Но это должно сработать.

Смотрите здесь:

http://codex.wordpress.org/Function_Reference/get_search_form#Theme_Form

+0

JS не находится в файле php. Также использование эха в настоящее время по-прежнему помещает php в комментарий. Я попробую то, что вы положили. –

+0

Какой файл js в точности? он не может быть в файле .js. но если вы поместите код в свой footer.php или что-то, то оно должно работать – w3bMak3r

+0

В файле .js (javascript), расположенном снаружи. –

Смежные вопросы