WP\\u查询用于通过它提供的简单参数获取帖子。WordPress为搜索提供了一个名为“s”的参数。它基本上搜索所有帖子的内容,并在任何地方列出带有该字符串的帖子。还有另一个WP\\u查询参数,称为post\\u status,可用于筛选帖子,其中Post_Status
请注意,此代码包含在AJAX函数中。我正在从前端调用一个AJAX函数,该函数将当前页面的url传递给$_POST[\'url\']
. $_POST[\'url\']
已定义,请不要担心。我希望查询只有草稿帖子,如果url有;草稿/quot;在里面。通过重复我知道的变量,变量本身运行良好。
下面是WP\\U查询
$Current_Id =get_current_user_id();
echo $_POST[\'url\'] . \'/n\';
if(strpos($_POST[\'url\'], \'draft\') == false ){
$post_status = array(\'publish\', \'privatised\', \'draft\', \'inherit\', \'future\');
}
else{
$post_status = array(\'draft\');
}
echo print_r($post_status) . \'/n\';
$args = array(
\'post_type\' => array(\'post\', \'download\', \'page\'),
\'post_status\' => array(\'draft\'),
\'author\' => $Current_Id,
\'numberposts\' => -1,
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'posts_per_page\' => 20,
\'paged\' => $_POST[\'pagenum\'],
\'s\' => $_POST[\'search\'],
);
$pagenum = ($_POST[\'pagenum\'] ? $_POST[\'pagenum\'] : \'1\');
$user_posts = new WP_Query( $args);
if( !empty($user_posts)){
?>
<?php
while ($user_posts->have_posts()) {
$user_posts->the_post();
上述代码虽然看起来正确,但不起作用。当我使用此代码时,它会忽略Post状态。假设我从url提交表单;https://milyin.com/draft/";并且输入字段有文本“;埃隆麝香“;在里面。AJAX应该执行WP\\u查询并返回当前用户的帖子,这些帖子中包含“http://www.AJAX.org/cn/cn”一词;埃隆麝香“;并且只显示;草稿“;职位。不幸的是,它过滤并显示所有帖子状态中的Elon Musk帖子。
我最初的怀疑是$_POST[\'url\']
未定义或定义错误。但后来我随机决定删除搜索参数。如下所示。
$args = array(
\'post_type\' => array(\'post\', \'download\', \'page\'),
\'post_status\' => array(\'draft\'),
\'author\' => $Current_Id,
\'numberposts\' => -1,
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'posts_per_page\' => 20,
\'paged\' => $_POST[\'pagenum\'],
);
正如你所看到的,上面代码中唯一改变的是
\'s\' => $_POST[\'search\'],
缺少。当我这次提交表格的时候。正如我所料,它只显示了草稿栏。然后我尝试了相反的方法。
我试过了\'s\' => $_POST[\'search\']
, 并包括 \'post_status\' => $post_status,
砰的一声,它又开始工作了。它只是按照我的预期显示了所有的选秀帖子。
所以In Nutshell, My code runs perfect, if I just Query post_status
, it also runs perfect when I just query s
but it does not run when I s
and post_status
both together. Key Things to remember, this code is running using AJAX, the $_POST[\'url\'] seems obvious suspect, but it is running perfectly in my opinion, and I am using this code to echo (not returning any thing) Title Featured Image etc.
当我用s
和post_status
总之,它只显示所有Post\\u类型的搜索结果,而且,当我在没有AJAX的情况下直接运行此代码时,它也可以工作。