【发布时间】:2021-10-04 22:26:44
【问题描述】:
在functions.php 中使用get_search_query() 执行wp_query 时,我无法获取搜索词。
function load_posts() {
$ppp = (isset($_POST["ppp"])) ? $_POST["ppp"] : 20;
$page = (isset($_POST['page'])) ? $_POST['page'] : 1;
$args = array(
'suppress_filters' => true,
'post_type' => 'post',
'ignore_sticky_posts' => true,
'post_status' => array('publish'),
'orderby' => 'post_date',
'order' => 'DESC',
'posts_per_page' => $ppp,
'paged' => $page,
's' => get_search_query(), //i need access to search term here
);
$loop = new WP_Query($args);
echo '<pre>' . var_export($args, true) . '</pre>';
}
add_action('wp_ajax_nopriv_load_posts','load_posts');
add_action('wp_ajax_load_posts','load_posts');
这在functions.php中返回:
正如您在's' => '', 下看到的那样,搜索为空。
array (
'suppress_filters' => true,
'post_type' => 'post',
'ignore_sticky_posts' => true,
'post_status' =>
array (
0 => 'publish',
),
'orderby' => 'post_date',
'order' => 'DESC',
'posts_per_page' => '20',
'paged' => '1',
's' => '',
)
在 search.php 中运行完全相同的代码,它具有搜索值。 (唯一的区别是posts_per_page 但没关系)
array (
'suppress_filters' => true,
'ignore_sticky_posts' => true,
'post_type' => 'post',
'post_status' =>
array (
0 => 'publish',
),
'orderby' => 'post_date',
'order' => 'DESC',
'posts_per_page' => 4,
'paged' => 1,
's' => 'Hydro',
)
为了执行functions.php中的代码,我做了一个ajax请求来调用load_posts函数 (这很好用)
jQuery.post(ajaxUrl, {
action: "load_posts",
page: page,
ppp: ppp
})
如果需要,我很乐意提供更多信息,但我不明白为什么函数.php 中没有搜索值
任何帮助表示赞赏!
编辑:我发现这个线程说在functions.php中调用is_search()函数为时过早,因为它在搜索之前加载。我猜这与 get_search_query() 的问题相同。但仍然需要访问 function.php 中的搜索词并且不知道如何获取该值。
【问题讨论】:
-
这能回答你的问题吗? - wordpress.stackexchange.com/questions/142410/…
-
你在function.php中使用的是哪个钩子
-
add_action('wp_ajax_nopriv_load_posts','load_posts'); add_action('wp_ajax_load_posts','load_posts');