Как пронумеровать записи по порядку

Как пронумеровать записи по порядку | n-wp.ru

Андреич™ задавал уже вопрос о том, как пронумеровать записи по порядку. Использование ID для этого не подходит, потому что номер ID присваивается всем элементам, записываемым в базу данных, и далеко не в том порядке, в каком они появляются в блоге. Да и удаление записи из базы данных оставит дыру в нумерации, потому что единожды присвоенный номер ID уже не меняется. Чтобы пронумеровать записи, нужно использовать отдельную функцию, которая будет считать посты при выводе в цикле – при изменении количества функция будет отображать и новую нумерацию.

Как пронумеровать записи по порядку

Чтобы было удобно использовать эту функцию в шаблоне, нужно разделить код на две части – на код функции и ее вызов. Вставьте код функции в файл functions.php используемой вами темы:

function PostNumbers() {
    global $wpdb;
    $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ";
    $pageposts = $wpdb->get_results($querystr, OBJECT);
        $counts = 0 ;
if ($pageposts):
    foreach ($pageposts as $post):
        setup_postdata($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', 'PostNumbers' );
add_action ( 'deleted_post', 'PostNumbers' );
add_action ( 'edit_post', 'PostNumbers' );

Чтобы пронумеровать посты, вставьте вызов функции в цикл вывода постов:

ID,'incr_number',true); ?>

Цикла вывода можно определить примерно по такому коду:

это текст внутри цикла

Теперь при изменении количества записей будет изменяться и порядковый номер каждой записи.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*