Numrera automatiskt varje post i WordPress

Postad: 15.11.2020

Har du ett behov att automatiskt numrera varje post där varje post börjar med att vara nummer ett? Observera att det inte är postens ID som efterfrågas utan det aktuella ordningstalet när posten daterats.

Denna post innehåller kod-snippar som du kan använda. Det är alltid bra att ta en backup av din stilmall och funktionsfil innan.

Den här koden fungerar oavsett post-type. I nedanstående kod vill jag uppmärksamma att den post-type som här numreras är “podcast.” Ändra fritt till vilken post-type du vill ha. Lägg in koden i din functions.php

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 = 'podcast' 
 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' );

Kopiera sedan in nedanstående kod i de tema-filer du vill att numren ska visas.

<h1>Episode <?php echo get_post_meta($post->ID,'incr_number',true); ?>: <?php the_title();?></h1>

När du gjort detta så uppdatera en post för att se ändringarna. Du måste alltså uppdatera en post, annars så syns inte numreringen förrän du ändrar eller publicerar en ny post.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.