2015-02-06 20 views
1

我已经安装在我的网站WordPress的,我目前编辑的主题。jQuery的生成HTML里面评论(WordPress的)PHP

我已经所附列表项所生成的导航菜单的末尾。列表项内部是一个调用搜索表单的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,但我一直无法解决它。

存储搜索表单HTML的PHP​​变量是:

$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 2015-02-06 23:28:46

+0

是的,我有一个 – 2015-02-06 23:32:38

+0

该功能首先进入该文件。该文件中的内容是评论代码? – w3bMak3r 2015-02-06 23:41:38

回答

0

好吧,我要感谢游乐场地说明了为什么我使用JavaScript的想法是行不通的。

同样感谢w3bmak3r告诉我有关外部JS文件和wordpress网站上search_form函数的链接。

我的目标是在导航列表的末尾添加一个搜索栏。我通过在导航列表的开始处添加一个列表项来完成此任务。 我找到了信息here on wordpress

来源:

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

要:

<?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 2015-02-06 23:30:02

+1

我认为代码会像HTML标签一样正常启动。 – 2015-02-06 23:30:07

+0

@BlackyWolf它的确如此 – w3bMak3r 2015-02-06 23:30:28

0

试试这个。

检查,看看是否有一个getsearchform.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。我会尝试你所放的。 – 2015-02-06 23:51:19

+0

究竟是什么文件?它不能在.js文件中。但如果你把代码放在你的footer.php中或者它应该工作 – w3bMak3r 2015-02-06 23:52:10

+0

在位于外部的.js(javascript)文件中。 – 2015-02-06 23:52:46