WordPress函数根据id获取词汇或帖子对象

时间:2018-05-12 作者:Daniel

目前,为了区分post和term对象,我使用了一段简短的代码:

$object = get_post($id);

if ( ! $object ) {
    $object = get_term($id);
}
print_r($object);
是否有一个函数可以返回具有给定id的post对象或term对象,而不使用上述if语句?

向你问好,丹。

PS,我需要它用于WP ajax调用。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

get_queried_object() 将从主查询中获取当前查询的“thing”作为对象。那可能是WP_Post, WP_Term, 或WP_Post_Type (对于post-type归档)对象,但我认为这并不是您想要的,在AJAX中也不会有用。

除此之外,没有一个函数可以精确地满足您的要求,但它可能无论如何都不可取。术语和帖子存储在单独的表中,因此很容易会有具有相同ID的术语和帖子。当然,如果存在该帖子,您可以获取该帖子,或者返回到现有代码中的术语,但是如果您期望给定ID的术语,但有具有相同ID的Customiser修订版,该怎么办?这不是特别有帮助,也可能不是你所要求的。更不用说了WP_TermWP_Post 具有不同的属性并表示完全不同的事物,这意味着它们不可互换,这使得此类函数的实用性值得怀疑。

如果您通过AJAX发送ID,并且希望回调函数中包含适当的对象,那么最好的方法是通过AJAX发送预期的对象类型,并基于此检索适当的函数。

$id = $_GET[\'id\'];
$object_type = $_GET[\'object_type\'];

switch ( $object_type ) {
    case \'post\':
        $object = get_post( $id );
        break;
    case \'term\':
        $object = get_term( $id );
        break;
}

结束

相关推荐

AJAX处理程序抛出400(错误请求)-为什么?

我试图将“加载更多帖子”功能应用于帖子循环,但在管理ajax时,我处理的是400个错误请求。参考php。我使用的参考是—https://rudrastyh.com/wordpress/load-more-posts-ajax.html以下函数(在functions.php中)正在将查询参数传递给javascript:function wordpress_my_load_more_scripts() { global $wp_query; wp_enqu