我不太确定您要做什么,但总体思路很简单。只需有条件地创建占位符文本。
if (is_home()) {
$placeholder = "Search Posts...";
} elseif(is_tag()) {
$placeholder = "Search Tags...";
} else {
$placeholder = "Search...";
}
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="<?php echo $placeholder; ?>" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
这和你正在寻找的东西一样吗?
基于对要求的进一步解释
搜索表单功能并不是真的要像您想要的那样工作。您可以使用全局变量来欺骗它。
放
$GLOBALS['placeholder'] = "Default placeholder value";
然后编辑您的functions.php
表格以阅读...
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="<?php echo $GLOBALS['placeholder']; ?>" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
并像这样调用函数:
$GLOBALS['placeholder'] = "Placeholder value...";
get_search_form();
根据文档,get_search_form(false)
应该返回一个字符串,这意味着这样的东西应该可以工作:
编辑搜索表单以阅读:
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="%s" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
然后使用...
$search_form = get_search_form(false);
printf($search_form,'Placeholder...');
这避免了全局变量,这通常是一件好事。我不能开箱即用。如果您查看源代码,该功能似乎取决于searchform.php
. 如果该文件存在,它就会被简单地包含在内,这使得“返回字符串”部分非常冒险。事实证明,使用可用的过滤器进行劫持非常困难。
为了避免global
杂耍,我认为您需要将“get_search_form”替换为:
function my_get_searchform($placeholder = 'Search') {
$search_form_template = locate_template('searchform.php');
if ( '' != $search_form_template ) {
ob_start();
require($search_form_template);
$form = ob_get_clean();
printf($form,$placeholder);
}
}