如何使用自定义分类作为 get_posts 查询中的“meta_value”

问题描述 投票:0回答:1

我被一些我确信很简单的事情困住了,但我在网上找不到答案。

我有两种自定义帖子类型(“步行”和“功能”),我尝试使用每个“步行”唯一的代码号进行查询。 “特征”可以与一个或多个“行走”相关,并且这作为自定义分类法“路线编号上的特征”存储在“特征”cpt 中。我正在尝试使用分类值(或多个值)并列出与该功能相关的步行(或多个步行)。相应的号码存储在“walks”cpt 上的自定义字段(“route_number”)中。

我尝试过以下代码:

    $routenumber = get_the_term_list( $post->ID, 'feature-on-route-number', '', ', ', '' ); 
    $posts = get_posts(array(
    'posts_per_page'    => -1,
    'post_type'         => 'walks',
    'meta_key'      => 'route_number',
    'meta_value'    => $routenumber              
     ));

这不会返回任何结果。我通过添加“meta_value”的实际值以及为 $routenumber 分配单个值来测试该查询,并且它有效。所以我猜测问题在于使用分类法来设置变量。有没有简单的方法来解决这个问题?或者我是否需要第二个查询来循环分类法?

非常感谢

php wordpress custom-post-type taxonomy
1个回答
0
投票

不要使用

get_the_term_list()
WordPress 函数,因为它会提供链接术语名称的 HTML 字符串。

改用 WordPress 功能:

假设“feature-on-route-number”是正确的自定义分类法,请尝试:

$routenumber = get_the_terms($post->ID, 'feature-on-route-number'); 

if ( $routenumber && !is_wp_error($routenumber) ) {
    $posts = get_posts( array(
        'posts_per_page'    => -1,
        'post_type'         => 'walks',
        'meta_key'          => 'route_number',
        'meta_value'        => current($routenumber)->name,              
    ));
}

应该会更好。

© www.soinside.com 2019 - 2024. All rights reserved.