如何根据其中引用的当前帖子拉出帖子对象?

Posted

技术标签:

【中文标题】如何根据其中引用的当前帖子拉出帖子对象?【英文标题】:How to pull a post object based on the current post being referanced in it? 【发布时间】:2020-12-10 22:08:59 【问题描述】:

我为产品视频设置了一个名为“tv”的自定义帖子类型,并在其中添加了一个自定义字段,将产品称为帖子对象。

我现在想对其进行逆向工程,这样如果在该字段中引用了产品,产品页面上就会显示一个指向正确视频的链接。这是我目前所拥有的:

<?php

    $thisinstrument = get_post($post->ID,$output = OBJECT,$filter = 'raw');
    
    $posts = get_posts(array(
    'numberposts'   => -1,
    'post_type'     => 'tv',
    'meta_key'      => 'instruments',
    'meta_value'    =>  $thisinstrument
    
    ));

    if( $posts ): ?>
    
    <!-- TV -->
    
    <ul>
        
    <?php foreach( $posts as $post ): 
        
        setup_postdata( $post );
        
        ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>
    
    <?php endforeach; ?>
    
    </ul>
    
    <?php wp_reset_postdata(); ?>

    <?php endif; ?>

我认为我的思路是正确的。起初我将 $thisinstrument 设置为 get_post($post = 'null',$output = OBJECT,$filter = 'raw');这只是打印了所有帖子。

我哪里错了?

【问题讨论】:

【参考方案1】:

我假设“'meta_key' => 'instruments'”应该包含当前帖子的 ID,所以当您查询 $thisinstrument 时,您应该使用 $post->ID。 我相信以下代码应该可以帮助您完成这项工作。

<?php
    
    // $thisinstrument =.... No need for this line if the 'instruments' field is the ID of the current post, we can just insert that inside the get_posts() below.

  GLOBAL $post;
  $posts = get_posts(array(

    'numberposts'   => 1,
    'post_type'     => 'tv',
    'meta_query'    => array(
        array(
            'key' => 'instruments',
            'value' => $post->ID,
        )
    )
));

if( $posts ): ?>

<!-- TV -->

<ul>
    
<?php foreach( $posts as $post ): 
    
    setup_postdata( $post );
    
    ?>
    <li>
        <a href="<?php the_permalink($post->ID); ?>"><?php the_title($post->ID); ?></a>
    </li>

<?php endforeach; ?>

</ul>

<?php wp_reset_postdata(); ?>

<?php endif; ?>

我认为应该这样做,试一试,让我知道我可能读错了。

【讨论】:

好的,我刚刚测试了它,没有运气(抱歉耽搁了) - 有什么想法吗?您是正确的,元键是需要匹配循环中“当前”帖子 ID 的自定义字段的 ID。 #Coopero 我已经更新了代码,请重试。 谢谢 - 但运气不好,我不得不删除 array(,因为它导致了两次写入的错误,现在它会打印所有 tv 类型的帖子。当我将帖子数量更改为 1 时,它只会打印最近的一个。感谢您的帮助 - 您怎么看? 我再次更新了代码。除非您遇到问题,否则代码应该可以为您提供所需的内容。请问可以通过我的邮箱联系我吗?讨论这个问题有点肤浅,这里有一些灰色地带。检查我的个人资料。

以上是关于如何根据其中引用的当前帖子拉出帖子对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据距离过滤器显示帖子

如何根据“用户元”删除所有用户和帖子?

根据 Wordpress 中的自定义字段值批量重写帖子 slug

根据 ACF 关系字段显示“相关帖子”

如何获取functions.php中的当前帖子类型以便全局使用?

如何在MySQL中加入查询以根据距离计算和Google地理编码查找WordPress帖子?