获取在 ACF Pro Repeater 字段中使用指定帖子 ID 的帖子数组

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

我不确定这是否可能,但有人可以肯定地告诉我。

如果我正在制定定制解决方案,这种情况可以通过链接表来解决。

在典型的帖子中,我有一个中继器字段,用于列出书籍。这些书籍被保存为自定义帖子类型,因此您的页面可能包含 10 本推荐/相关书籍。有些书在多个帖子中被引用。假设您有一篇关于约翰·格里沙姆的帖子和一篇关于法律惊悚片的帖子,它们可能都包含《鹈鹕简报》。到目前为止一切顺利。

但是如果我想反转查询怎么办?

当我进入 single.php 页面查找一本书时,有没有办法列出引用该书的帖子?我关于《鹈鹕简报》的页面是否可以显示它已包含在有关约翰·格里沙姆的帖子和有关法律惊悚片的帖子中?还是我在要求不可能的事情?!

如果这是可能的,那么我不知道从哪里开始。

wordpress advanced-custom-fields custom-wordpress-pages acfpro
1个回答
0
投票

假设您使用 ACF PRO 使用密钥

recommended_books
创建了中继器,然后对于每个中继器,您有一个名为
book_id
的图书 ID 字段,因此在书籍的
single.php
文件中,您可以执行某些操作像这样获取当前书籍被引用的作者 ID。

global $wpdb;

$book_id = get_the_ID(); // Assign the ID of the current book;
$authors = $wpdb->get_results("SELECT {$wpdb->prefix}postmeta.post_id FROM {$wpdb->prefix}postmeta
    INNER JOIN {$wpdb->prefix}posts
    WHERE {$wpdb->prefix}postmeta.post_id = {$wpdb->prefix}posts.ID
       AND {$wpdb->prefix}posts.post_type = 'post'
       AND meta_key LIKE 'recommended_books_%_book_id' AND meta_value={$book_id}");

if($authors) {
    foreach ($authors as $author) {
        $author_id = $author->post_id;
        // Do your stuff to display the author
    }
}

如果您的设置不同,请记得更新密钥

recommended_books
book_id
和帖子类型
author

现在有了你得到的

post_id
数组,你可以按照你想要的方式显示作者列表。

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