我怎么才能找到当前帖子的计数?

时间:2020-07-17 作者:Ash

假设我的自定义帖子类型是“故事”。我的网站上发表了20篇文章。因此,每篇帖子都会变成:“故事1”,“故事2”,…”故事20’。因此,第一篇文章是“故事1”,最后一篇文章是“故事20”。现在,当我打开其中一个自定义帖子时,我想看看数字。例如,如果我打开第九篇(已发布)帖子,我想看到它提到“故事9”。我不想硬编码它,我可以使用ACF插件。我希望动态生成数据,就像wordpress动态生成post id或slug一样。

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

Wordpress中没有这样的帖子顺序或编号。

数据库使用“主键”存储内容,主键只是一个数字,但每个帖子的主键永远保持不变。因此,如果你添加了很多帖子,删除了很多帖子,然后再添加一些,那么前3篇帖子的主键可能是1,20100。

如果你想找到像你的问题中那样的帖子的“数量”或“顺序”,那么你必须选择如何排序,然后自己找到顺序。

例如,您可以使用WP\\u Query获得按日期排序的所有帖子,然后按编号1、2、3、4的顺序打印,您还可以使用此列表确定任何帖子都是此列表中的哪个编号。

HTH。如果您需要更多信息,请扩展您的问题。

编辑:

因此,根据您更新的问题,您需要这样做。您可以将此数字存储在post\\u元字段中,并钩住save 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++;
}
这将为您提供一个数组,允许您查找任何帖子ID的“count”。因此,您可以这样使用:

$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] ;
您可以将其放在一个函数中,使其易于调用,或者如上所述,您可以将其挂接到保存/删除帖子挂钩中,以将数字存储在帖子元中,并在每次添加或删除帖子时更新数字,但您需要为此编写代码;-)

这有帮助吗?

相关推荐

POSTS_PER_PAGE不在块中工作

我已经为Wordpress编辑器创建了一个新块,我正在尝试使用一个简单的WP\\U查询,但到目前为止$args 除了post_type 背景例如,我想设置posts_per_page 设置为3,但忽略此设置。为什么会这样?<?php wp_reset_postdata(); wp_reset_query(); $latest_news_args = [ \'post_type\' => \'post\',