php - 如何检查是否在标头中调用了部分/包含?
问题描述
这让我发疯了好几个小时,我觉得它应该很简单,但我在任何地方都找不到任何东西,我想我一定是使用了错误的搜索词。
本质上,我想在同一页面的两个地方调用搜索表单,它位于整个站点的标题栏中,但也显示在帖子上方的存档列表中;纯粹用于搜索帖子(客户请求)。
我需要检查它是否在标题或内容区域中被调用,所以我可以更改占位符文本并添加隐藏输入,以便它只搜索存档页面上的帖子。
除了创建两个表单并分别调用它们之外,我似乎找不到任何解决方案来检查是否“未在标题中调用”,这对我来说似乎有点矫枉过正。
$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>';
解决方案
一个简单的解决方案,虽然它不依赖于当前文件/位置,但可以让表单在您的主题 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");
推荐阅读
- php - 如何使用php从sql显示开始日期和结束日期或开始时间和结束时间之间的数据?
- c# - 如何通过 Enterprise Architect API 打开图像管理器
- firebase - 在 Vue.js 中渲染 firestore 值
- php - symfony 路由器库找不到控制器
- javascript - require('core-js/es6/map') polyfill 不适用于 IE11 上的扩展 Map 对象
- git - 查看被 .gitignore 忽略的文件的命令
- angular - 根据语言环境 ID 在 Angular 中格式化日期
- html - 以角度导航时页面未滚动到顶部
- .net - 如何在 Azure App 中测试动态 ip 限制?
- r - r中用户输入日期后的调度代码