WP查询-两个自定义帖子类型及其字段之间的关系

时间:2017-04-04 作者:nickpish

我正在使用高级自定义字段和Genesis,并尝试修改模板以反映两种自定义帖子类型之间的关系(使用它们关联的自定义字段)在这种情况下,我有“Staff”和“Reports”的自定义职位类型,而对于Staff,我有自定义字段“first\\u name”和“last\\u name”;与“Reports”CPT关联,我还有两个自定义字段“primary\\u contact”和“associated\\u contact”-在“single staff.php”模板中,我想在侧边栏中呈现任何关联报告的列表,其中包括that staff member 定义为“primary\\u contact”或“associated\\u contact”

因此,例如,如果我已将“Tom Jones”创建为职员(“staff”职位类型的一个实例),那么我是否可以定义一个查询,以输出报告列表,其中“Tom Jones”在“reports”自定义职位类型的任何实例中定义为“primary\\u contact”和/或“associated\\u contact”?我在下面为这个查询提供了一个(非常)粗略的概念:

$args = array(
\'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'post_type\' => \'reports\',
            \'meta_key\' => \'primary_contact\',
            \'meta_value\' => \'$this.full_name\',
        ),
        array(
            \'post_type\' => \'reports\',
            \'meta_key\' => \'associated_contact\',
            \'meta_value\' => \'$this.full_name\',
        )
    )
);

$query = new WP_Query( $args );
如果这个问题还不够清楚,请告诉我,谢谢你的见解!

2 个回复
最合适的回答,由SO网友:rudtek 整理而成

我还没有测试过这个,但应该可以。你会想把它放在单人间里。php。您必须添加详细信息(实际查询、帖子类型等)。

$reports = get_posts(array(
                            \'post_type\' => \'reports\',  //use actual post type
                            \'meta_query\' => array(
                                \'relation\' => \'or\',
                                array(
                                    \'key\' => \'primary_contact\', // name of custom field
                                    \'value\' => \'"\' . get_the_ID() . \'"\', // matches exaclty "123", not just 123. This prevents a match for "1234"
                                    \'compare\' => \'LIKE\'
                                )
                                array(
                                    \'key\' => \'associated_contact\', // name of custom field
                                    \'value\' => \'"\' . get_the_ID() . \'"\', // matches exaclty "123", not just 123. This prevents a match for "1234"
                                    \'compare\' => \'LIKE\'
                                )
                            )
                        ));

                        ?>
                        <?php if( $reports ): ?>
                            <ul>
                            <?php foreach( $reports as $report ): ?>
                                <li>
                                    <?php echo get_the_title( $doctor->ID ); ?>
                                </li>
                            <?php endforeach; ?>
                            </ul>
                        <?php endif; ?>

SO网友:WebElaine

另一个选项:有一个名为Bidirectional Relationships 这可能会简化您的操作。在ACF中定义关系,然后在编辑任一帖子类型时,将看到一个框,可用于搜索或从列表中选择相关内容。然后,您可以在模板中随意使用这些信息。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post