用于过滤将当前帖子作为分类的帖子的自定义查询

时间:2021-03-09 作者:Ernest

Introduction

我是一个对PHP一无所知的图形设计师,但在这种特殊情况下,我需要动手,我需要编码神的帮助。我一直在努力解决这个问题,读了一些关于它的书,尝试了一些东西,但我可能太笨了,想不出来。

Toolkit

我有一个Wordpress网站,我正在使用Elementor Pro来构建它。我正在使用插件;CPT-UI“;拥有自己的自定义帖子类型,以及;CPT分类;能够将一个CPT用作另一个CPT的分类法。从Elementor,如果我能够在;“代码段”;插件。

The circumstances

也就是说,我会准确描述发生了什么:我有一个;“项目”;CPT和a“;“设计”;CPT,两者都是CPT。同时,“;“项目”;是与“相关的分类法”;“设计”;,这意味着我可以将属于同一个大“的许多设计分组。”;项目;。例如,如果我设计了可口可乐的标志,并且还设计了带有该标志的名片,那么这两种设计都将被归类为分类法(也称为CPT),称为;新Coca标识”;。因此,从内部;新古柯标识”;页面(实际上是应用于所有“项目”的动态模板)我可以获取所有将当前循环id(本例中为“New Coca Identity”)指定为其分类的设计。

Should be something like this (I believe)

这就是我想到的。。。

// Create the action to call this query from Elementor
add_action(\'elementor_pro/posts/query/projects_designs_query\', function($query)
{

// Get current meta Query
    $meta_query = $query->get( \'meta_query\' );

// If there is no meta query when this filter runs, it should be initialized as an empty array.
    if ( ! $meta_query ) {
        $meta_query = [];
    }

// Append our meta query
    $tax_query[] = [
        \'taxonomy\' => \'projects\',
        \'field\' => \'term_id\',
        \'terms\' => \'HERE SHOULD BE THE DYNAMIC ID I GUESS\',
    ];
    $query->set( \'meta_query\', $meta_query );
} );

1 个回复
SO网友:Ernest

我成功了!我将与大家分享我的做法,以防像我这样缺乏php知识的人也出现在同一地点。

add_action(\'elementor_pro/posts/query/projects_designs_query\', function($query)
{

$post_id = get_the_ID();

$meta_query[] = [
            \'post_type\' => \'designs\',
            \'taxonomy\' => \'projects\',
            \'value\' => $post_id,
            \'compare\' => \'in\',
];
$query->set( \'meta_query\', $meta_query );
} );
这样做的目的是首先获取循环中当前帖子的ID(在我的例子中,这是一种项目自定义帖子类型)。然后获取属于同一项目(当前帖子)的所有帖子(使用自定义帖子类型设计)。