Php WordPress:如何返回带有查询的meta\u帖子?
我正在使用admin-AJAX.php执行一个AJAX请求,根据选中的复选框过滤帖子。它工作得很好,尽管我正在努力找到一种方法来返回每篇文章的元细节 我只是使用query_posts获取我的数据,如下所示:Php WordPress:如何返回带有查询的meta\u帖子?,php,ajax,wordpress,Php,Ajax,Wordpress,我正在使用admin-AJAX.php执行一个AJAX请求,根据选中的复选框过滤帖子。它工作得很好,尽管我正在努力找到一种方法来返回每篇文章的元细节 我只是使用query_posts获取我的数据,如下所示: function ajax_get_latest_posts($tax){ $args= array( 'post_type'=>'course', 'tax_query' => array( array(
function ajax_get_latest_posts($tax){
$args= array(
'post_type'=>'course',
'tax_query' => array(
array(
'taxonomy' => 'subject',
'field' => 'slug',
'terms' => $tax
)
)
);
$posts=query_posts( $args);
return $posts;
}
我如何修改它以同时返回元数据?我知道我可以使用meta_query按元数据筛选帖子,但我只想在帖子中显示数据。编辑:
除了下面概述的解决方案外,如果您使用的是WordPress>=3.5(您应该是:),那么您可以简单地使用WP_Post对象的神奇方法
基本上,WP_Post对象(几乎所有来自WP_查询的查询结果的posts数组都由它组成)使用PHP的\uu get()
和\uu isset()
魔术方法。这些方法允许您使用对象本身中未定义的对象属性
这里有一个例子
foreach ( $posts as $key => $post ) {
// This:
echo $post->key1;
// is the same as this:
echo get_post_meta( $post->ID, 'key1', true );
}
如果进行打印($post)
或变量转储($post)
,将不会看到$post
对象的“key1”属性。但该函数允许您访问该属性
===========================================================
在我看来,您有两个常规选项—循环浏览帖子并获取所需的数据,如下所示(此代码将在$posts=query_posts($args);
)之后出现:
或者挂接到the_postsfilter hook,并在那里做同样的事情(更多的工作,但是如果您有多个函数需要将数据添加到每个post,那么可能会更容易)。此代码将转到functions.php或插件文件(如果您正在制作插件):
然后你会改变你的想法
$posts=query_posts( $args);
这一行:
add_filter( 'the_posts', 'my_the_posts_filter', 10 );
$posts = query_posts( $args );
remove_filter( 'the_posts', 'my_the_posts_filter', 10 );
考虑到这将在AJAX请求内部发生,您可以从技术上取消
remove\u filter()
调用,但最好在代码中进行任何其他post查询时使用它 去那里寻找meta_query
完美答案,我最后使用了第一个解决方案,但第二个也很好,因为我不知道这个方法。谢谢,你救了我一个小时我更新了我的答案-我完全忘记了WP_Post对象的神奇方法-它们更容易使用:)。基本上,您可以将元键作为对象的属性来访问。请随意查看此处的代码-并查看您可以访问的其他类似内容(例如$post->page_template
;)太好了,谢谢!还没有使用WP_Post,它看起来确实有点简单。谢谢你的修改,祝你好运
$posts=query_posts( $args);
add_filter( 'the_posts', 'my_the_posts_filter', 10 );
$posts = query_posts( $args );
remove_filter( 'the_posts', 'my_the_posts_filter', 10 );