为什么is_earch不能在函数.php中工作?

时间:2014-01-06 作者:UzumakiDev

我正在尝试使用is\\u search从函数中输出一些内容。php。我在实际搜索页面本身上使用is\\U搜索,效果很好:

if(is_search()) {
   echo get_search_query( \'<h1>\', \'</h1>\' );
} 
但从功能上来说。php这不起作用:

function data_scroll_all(){
   if(is_search()) {
     $offset = $_POST[\'offset\'];
     $category = $_POST[\'cat\'];
     $args = array(\'posts_per_page\' => 3, \'category__not_in\' => 1, \'offset\' => $offset, \'orderby\' => \'date\', \'cat\' => $category);
     $loop = new WP_Query($args);
       if($loop->have_posts()) {
       while($loop->have_posts()){
       $loop->the_post(); 
       get_template_part( \'content-archive\' );
       }
    } wp_reset_postdata();
 } else {
    echo "Nope!";
   }
die(\'\');
}

有了这个,我只会说“不!”当我在搜索页面上时。

我的搜索模板设置如下:

<?php
/*
Template Name: Search Page
*/
?>
<?php
global $query_string;

$query_args = explode("&", $query_string);
$search_query = array();

foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach

$search = new WP_Query($search_query);
?>
我有一个航路点“无限滚动”功能,到达页面底部时触发:

var ajax_url = $(\'.loadAll\').attr(\'data-url\');
var cat = $(\'.loadAll\').attr(\'data-cat\');
var offset = -3;
$(\'#infinite-load\').waypoint(function (direction) {
    if (direction === \'down\') {
        offset = parseInt(offset) + 3;
        $.ajax({
            dataType: "HTML",
            url: ajax_url,
            type: \'POST\',
            data: {
                action: \'data_scroll_all\',
                cat: cat,
                offset: offset
            },
            beforeSend: function () {
                $(".loading").show(); //show image loading
            },
            success: function (data) {
                $(".loading").hide();
                $(\'#infinite-load\').append(data);
                $.waypoints(\'refresh\');
            }
        });
    }
}, {
    offset: \'bottom-in-view\'
});

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

。。。这个调用很好,因为它实际上在应该的地方重复了“no”,你是说这可能是个问题,因为我正在进行一个ajax调用,而不是搜索。php?

Ajax调用是对服务器的新请求。加载的页面是(应该是)wp-admin/admin-ajax.php 这是模板中性的。那个is not 一个搜索页面。is_search 永远不会true. 什么is_search 简而言之,就是检查主查询以查看您是否在搜索结果模板页面上。通过AJAX调用admin-ajax.php, 你不是。

您可能只需要删除该检查,因为您的函数可能只在适当的地方使用,但您需要提供更多的上下文来获得可靠的答案。

SO网友:LindaJeanne

您的代码没有显示从何处调用data\\u scroll\\u all(),因此这只是一个盲目的猜测——如果没有找到正确的地方,请道歉。

哪一个都不重要。php fike函数位于中,但is\\u search()只能从循环内调用——如果从中调用函数的位置在循环外,它将不起作用。

(它检查当前查询是否是搜索查询,而不是您是否在搜索页面上)

结束

相关推荐

无法使用WP_QUERY将“Search Value”和“Tax_Query”组合在一起

这是我在模板函数中的函数。php。问题是这是可行的:function ajax_search_action_do(){ global $wp_query; $search = $_POST[\'search_value\']; $country = $_POST[\'country_value\']; $args = array( \'s\' => $search,