基于元字段的WP_QUERY和DES排序?

时间:2019-05-11 作者:Henry

是否可以按“开始日期”筛选自定义分类法归档中的事件(WP查询)?

我创建了一个名为“事件”的自定义帖子类型,其中“事件”是一个开始日期

当我查看来自自定义帖子类型的自定义分类列表数据时,我希望事件以DES方式按开始日期过滤。

我认为这个代码会起作用-我走对了吗?

//Using Wordpress Pre-Get filter to order the custom taxonomy by custom field
function customize_customtaxonomy_archive_display ( $query ) {
    if (($query->is_main_query()) && (is_tax(\'country\')))

    $query->set( \'post_type\', \'your-post-type\' );  // not sure??               
    $query->set( \'posts_per_page\', \'-1\' );
    $query->set( \'meta_key\', \'start_date\' ); // this is meta_field          
    $query->set( \'orderby\', \'meta_value_num\' );
    $query->set( \'order\', \'ASC\' );
}

 add_action( \'pre_get_posts\', \'customize_customtaxonomy_archive_display\' );
以上内容来源于此:Custom Taxonomy order by Custom Field

我原以为上面的内容对我有用,但事实并非如此——也许是因为我不确定在$query->set( \'post_type\', \'your-post-type\' ); 一点

我应该在那里添加什么?

1 个回复
SO网友:Jacob Peattie

没有什么你不需要设置帖子类型。您的分类法存档可能已经在查询正确的帖子类型。

function customize_customtaxonomy_archive_display ( $query ) {
    if ( $query->is_tax( \'country\' ) ) {
        $query->set( \'meta_key\', \'start_date\' );
        $query->set( \'orderby\', \'meta_value_num\' );
        $query->set( \'order\', \'ASC\' );
    }
}
注:

  • $query->is_main_query() 检查时是冗余的$query->is_tax(), 因为(据我所知)二次查询永远不可能是分类法归档{} 具有if 语句,否则该条件将仅适用于下一行。您复制的原始代码将把排序和每页帖子值应用于所有查询。即使只有一行,省略括号也被认为是不好的做法

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!