假设我的自定义帖子类型是“故事”。我有20个故事发表在我的网站上。所以每个帖子都变成了:“故事1”,“故事2”,.“故事20”因此,第一篇文章是“故事1”,最后一篇文章是“故事20”。现在,当我打开其中一个定制的帖子,我想看看号码。例如,如果我打开第九篇文章,我希望看到它提到‘故事9’。我不想硬编码它,我可以使用ACF插件。我希望这些数据是动态生成的,就像wordpress如何动态地生成post id或slug一样。
发布于 2020-07-17 10:19:17
在Wordpress中没有这样的帖子的订单或编号。
数据库用‘主键’来存储东西,这只是一个数字,但是对于每个帖子,这始终是一样的。因此,如果您添加了大量的帖子,删除了大量的帖子,然后再添加一些,那么前3个帖子的主键可能是1,20,100。
如果你想在你的问题中找到帖子的“计数”或“顺序”,那么你必须选择你想要对它们排序的方式,然后自己找出顺序。
例如,您可以使用WP_Query来获取按日期排序的所有帖子,然后打印它们以给它们编号1、2、3、4,还可以使用这个列表来确定该列表中任何帖子的编号。
HTH。如果您需要更多的信息,请扩展您的问题。
编辑:
所以根据你最新的问题,你需要这样做。您可以将此数字存储在post_meta字段中,并将其挂到保存post钩子中,以便在需要时进行更新--这将比在每次加载页面时运行该文件更有效。
$args = Array(
'orderby' => 'date',
'order' => 'ASC' // oldest first
}
$postsSorted = get_posts($args);
$count = 1;
$postToNumbers = Array();
foreach($postsSorted as $post) {
$postNumbers[$post->ID] = $count;
$count++;
}这将为您提供一个数组,该数组允许您查找任何post ID的“计数”。
$postID = get_the_ID(); // whatever method is relevant to where you are to get the post ID
echo "The count of this post is " . $postNumbers[$postID] ;您可以将其放入函数中以便于调用,或者如前所述,您可以将其连接到保存/删除post挂钩中,以将数字存储在post元中,并在添加删除帖子时更新该数字,但您需要为此编写代码;-)
这有用吗?
发布于 2022-04-22 19:31:26
在@mozboz回答之后,我编写了代码的“显式版本”(前面的代码抛出了一个错误)。在我的single.php页脚中,这对我起了作用:
$count = 0;
$post_array = Array();
$args = Array(
'post_type' => 'post',
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page'=> -1
);
$posts_query = new WP_Query( $args );
if ( $posts_query->have_posts() ) {
while ( $posts_query->have_posts() ) {
$posts_query->the_post();
$post_id = get_the_ID();
$post_array[] = $post_id;
$count++;
}
}
wp_reset_postdata();
$post_id = get_the_ID();
$position = array_search($post_id, $post_array);
echo $position +1 . '/' . $count;https://wordpress.stackexchange.com/questions/371238
复制相似问题