如何根据其中引用的当前帖子拉出帖子对象?
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