我想显示帖子的编号顺序。我试过使用<?php the_ID(); ?>
但这只是显示帖子ID,而且由于帖子的修订等原因,似乎没有按顺序进行。
是否有方法显示帖子是否为#2或#3或#4等?
谢谢
我想显示帖子的编号顺序。我试过使用<?php the_ID(); ?>
但这只是显示帖子ID,而且由于帖子的修订等原因,似乎没有按顺序进行。
是否有方法显示帖子是否为#2或#3或#4等?
谢谢
帖子ID并不意味着是连续的。要按顺序对帖子编号,必须使用元字段。回到这个问题上,有人对此进行了讨论:
Change Permalinks Structure to a Sequential Number for Each Post?
对于您想要做的事情,最好的答案似乎是发布在支持论坛上的一段代码:http://wordpress.org/support/topic/display-sequential-post-numbercount-not-post-id
function updateNumbers() {
/* numbering the published posts, starting with 1 for oldest;
/ creates and updates custom field \'incr_number\';
/ to show in post (within the loop) use <?php echo get_post_meta($post->ID,\'incr_number\',true); ?>
/ alchymyth 2010 */
global $wpdb;
$querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts
WHERE $wpdb->posts.post_status = \'publish\'
AND $wpdb->posts.post_type = \'post\'
ORDER BY $wpdb->posts.post_date ASC";
$pageposts = $wpdb->get_results($querystr, OBJECT);
$counts = 0 ;
if ($pageposts):
foreach ($pageposts as $post):
$counts++;
add_post_meta($post->ID, \'incr_number\', $counts, true);
update_post_meta($post->ID, \'incr_number\', $counts);
endforeach;
endif;
}
add_action ( \'publish_post\', \'updateNumbers\', 11 );
add_action ( \'deleted_post\', \'updateNumbers\' );
add_action ( \'edit_post\', \'updateNumbers\' );
(我对其进行了非常轻微的修改,以按发布日期排序,而不是像最初的代码那样仅按ID排序。)它将连接到所有帖子操作(保存/发布/删除),并更新所有帖子的“incr\\u number”自定义字段。因此,当数据库中有大量帖子时,保存帖子时会出现性能滞后,但一旦帖子被保存,显示数字就非常简单
echo get_post_meta( $post->ID, \'incr_number\', true );
如果您不想在自定义字段中保存连续的帖子编号,并在每次帖子操作中更新它,那么您可以将所有帖子作为wordpress ID数组获取,然后搜索此数组以获取单个帖子编号。我使用get_posts 要检索所有ID并按日期升序排列帖子,以便所有帖子中最早的帖子始终位于数组的第一位:
$postId = get_the_ID();
$allPosts = get_posts(array(
\'fields\' => \'ids\',
\'numberposts\' => -1,
\'orderby\' => \'date\',
\'order\' => \'ASC\'
));
$postNumber = array_search($postId, $allPosts) + 1;
echo $postNumber;
我们正在创建一个网站,展示一系列涵盖各种主题的档案录音。我们希望在主导航中有一个页面(如录音)按标题显示这些内容,并提供按类别浏览选项,并且听说最好的方法是提供自定义帖子类型。我们可以通过编辑函数来启动此设置。php页面,以及使用“自定义帖子UI”插件,但不知道如何在录制页面上以列表样式或其他方式实际显示自定义帖子。下一步是什么?感谢您的任何帮助。唐