如何检查在标头中是否调用了partial / include?

时间:2018-09-25 11:47:58

标签: php wordpress

这使我疯狂了好几个小时,我觉得它应该是如此简单,但是我什么都找不到,我想我一定使用了错误的搜索词。

基本上,我想在同一页面上的两个位置调用搜索表单,它位于整个网站的标题栏中,而且还显示在帖子上方的归档列表中;纯粹用于搜索帖子(客户请求)。

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

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

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

1 个答案:

答案 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");