如果您使用wordpress中的searchform.php来显示搜索输入框。如何在同一页面上的不同搜索框中显示不同的占位符?例如,我有一个页面在页脚,侧栏中的小部件和主导航菜单上有一个搜索框。我希望在每个占位符上显示不同的占位符。
这就是我在搜索表单中的内容
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="Search..." type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
onblur="if (this.value=='') this.value = this.defaultValue" >
<input class="searchsubmit" type="submit" value="<?php _e( '', 'mytheme' ); ?>">
</form>
<!-- /Searchform -->
答案 0 :(得分:0)
我不确定你要做什么,但一般的想法很简单。只需有条件地创建占位符文本。
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);
}
}
答案 1 :(得分:0)
get_search_form()函数打印出searchform.php中的代码。取代在页面中使用get_search_form(),取出该函数并从searchform.php复制代码并将其粘贴到您希望搜索栏显示的位置。然后相应地更改占位符文本。
<html>
<head>
<!-- Header Stuff -->
</head>
<body>
<div class="main-navigation-menu">
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="PLACEHOLDER TEXT HERE" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
onblur="if (this.value=='') this.value = this.defaultValue" >
<input class="searchsubmit" type="submit" value="<?php _e( '', 'mytheme' ); ?>">
</form>
<!-- /Searchform -->
</div>
<div class="sidebar">
<div class="widget">
<!-- Default widget stuff from functions.php will appear here. Searchform styling will come from searchform.php -->
</div>
</div>
<div class="footer">
<!-- Searchform -->
<form method="get" class="search" action="<?php echo home_url(); ?>" >
<input id="s" placeholder="PLACEHOLDER TEXT HERE" type="text" name="s" onfocus="if (this.value==this.defaultValue) this.value = '';"
onblur="if (this.value=='') this.value = this.defaultValue" >
<input class="searchsubmit" type="submit" value="<?php _e( '', 'mytheme' ); ?>">
</form>
<!-- /Searchform -->
</div>
</body>
</html>
将searchform.php和样式保存在您希望窗口小部件搜索表单显示的位置。