首页 > 解决方案 > 如何检查是否在标头中调用了部分/包含?

问题描述

这让我发疯了好几个小时,我觉得它应该很简单,但我在任何地方都找不到任何东西,我想我一定是使用了错误的搜索词。

本质上,我想在同一页面的两个地方调用搜索表单,它位于整个站点的标题栏中,但也显示在帖子上方的存档列表中;纯粹用于搜索帖子(客户请求)。

我需要检查它是否在标题或内容区域中被调用,所以我可以更改占位符文本并添加隐藏输入,以便它只搜索存档页面上的帖子。

除了创建两个表单并分别调用它们之外,我似乎找不到任何解决方案来检查是否“未在标题中调用”,这对我来说似乎有点矫枉过正。

$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>';

标签: phpwordpress

解决方案


一个简单的解决方案,虽然它不依赖于当前文件/位置,但可以让表单在您的主题 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");

推荐阅读