函数GET_QUERIED_OBJECT()在自定义分类中返回NULL

时间:2019-12-04 作者:d3tr1tus

嗨,我需要从自定义分类中获取术语ID,但它始终为空。

taxonomy-galerie-kategorie.php

<?php
    /**
     * A custom taxonomy template for gallery.
     */
?>
<?php Starkers_Utilities::get_template_parts( array( \'parts/shared/html-header\', \'parts/shared/header\' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( \'parts/templates/header-image\' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( \'parts/templates/gallery\' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( \'parts/shared/footer\',\'parts/shared/html-footer\' ) ); ?>
query_posts([\'post_type\' => \'galerie\']);
    $terms = get_categories([
    \'taxonomy\' => \'galerie-kategorie\',
    \'hide_empty\' => false,
    \'orderby\' => \'date\',
    \'order\' => \'ASC\'
]);
var_dump(get_queried_object());
谁能帮帮我吗?

1 个回复
SO网友:Tom J Nowell

您根本不需要使用任何查询,尤其是query_posts.

相反,请使用pre_get_posts 确保对前端归档的该分类法的任何查询都具有适当的帖子类型的操作:


add_action( \'pre_get_posts\', function( \\WP_Query $q ) {
    // we only want the main query for galerie-kategorie archives
    if ( ! $q->is_main_query() || !$q->is_tax( \'galerie-kategorie\' ) ) {
        return;
    }
    $q->set( \'post_type\', \'galerie\' );
});
现在,它将确保WP在第一时间抓住您想要的东西。

否则,使用全新的WP_Query/query_post 您:

查询次数增加了一倍,WP完成了所有这些工作,而你只是把它扔进垃圾桶,让它重新来过!糟糕的可湿性粉剂:(

  • 使您的页面速度加倍,因为它必须两次完成所有操作!现在您必须做大量额外的工作才能使其重新工作,and 您必须编写自定义分页代码才能使链接正常工作,这会给插件和使用的代码带来兼容性问题pre_get_postspre_get_post 过滤器可以隐藏在functions.php
  • 如果您需要修改ro更改WP从数据库中获取的帖子,请使用pre_get_posts. 把它想象成在你把食物送到厨房之前改变你的食物顺序。你最不想做的事就是点食物,让它送到,然后改变主意,再次等待新的食物。

    相关推荐

    Get_Terms()-意外的‘=>’(T_DOUBLE_ARROW)错误

    我试图从数组中的所有分类法中获取术语。但这会引发这样的错误。。不知道为什么。这是错误的方法吗致命错误:语法错误,意外的“=>”(T\\u双箭头),应为“,”或“)”public function pggggo_list_of_terms(){ $terms = get_terms( \'taxonomy\' => array( \'vehicle_safely_features\',