这使我疯狂了好几个小时,我觉得它应该是如此简单,但是我什么都找不到,我想我一定使用了错误的搜索词。
基本上,我想在同一页面上的两个位置调用搜索表单,它位于整个网站的标题栏中,而且还显示在帖子上方的归档列表中;纯粹用于搜索帖子(客户请求)。
我需要检查它是在标题中还是在内容区域中被调用,因此我可以更改占位符文本并添加隐藏的输入,以便仅在存档页面上搜索帖子。
除了创建两个表单并分别调用它们之外,我似乎找不到任何解决方案来检查是否“未在标题中调用”,这对我来说似乎太过分了。
$search_text = 'Search';
$search_posts = false;
if ([Not Called In Header]) {
if (is_archive() || $_GET['post_type'] == 'post') {
$search_text = 'Search Articles';
$search_posts = '<input type="hidden" name="post_type" value="post">';
}
}
echo '<form role="search" method="get" class="search-form" action="'.home_url( '/' ).'" >';
echo '<input class="search-input" type="text" value="" name="s" id="s" placeholder="'.$search_text.'" />';
echo $search_posts;
echo '<button class="search-submit" type="submit">'.$search_text.'</button>';
echo '</form>';
答案 0 :(得分:1)
一个简单的解决方案,尽管它不依赖于当前文件/位置,但是将使表单输出在主题functions.php文件(或插件的一部分)内成为一个函数,然后传递占位符文本(或其他参数)。
类似的东西:
function my_form_output($search_text){
$search_posts = false;
if (is_archive() || $_GET['post_type'] == 'post') {
$search_posts = '<input type="hidden" name="post_type" value="post">';
}
echo '<form role="search" method="get" class="search-form" action="'.home_url( '/' ).'" >';
echo '<input class="search-input" type="text" value="" name="s" id="s" placeholder="'.$search_text.'" />';
echo $search_posts;
echo '<button class="search-submit" type="submit">'.$search_text.'</button>';
echo '</form>';
}
在要使用表单的位置中使用:
my_form_output("Search");
或
my_form_output("Search Articles");