0
94
2013-02-21

Изменить порядок сообщений в WordPress программно благодаря php

Если у вас возникла ситуация, когда вам нужно отобразить коллекцию сообщений в определенном порядке даная функция может быть Вам очень полезной.
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

WordPress использует menu_order столбец в таблице публикаций для управления порядком страниц и иерархическими типами записей. Если у вас возникла ситуация, когда вам нужно отобразить коллекцию сообщений в определенном порядке, используйте этот столбец базы данных. Затем, независимо от того, выбираете ли вы сообщения или создаете собственные запросы , все, что вам нужно сделать, это передать их в качестве параметра get_posts ()WP_Query 'menu_order post_title' orderby. Часто следующим шагом является предоставление пользователям возможности легко изменять порядок отображения. Мне действительно нравится упрощать работу пользователей, поэтому я использую встроенное взаимодействие jQuery Sortable для перетаскивания. Независимо от того, как вы решите разрешить переупорядочение, вам придется обновить menu_order значение в базе данных для нескольких сообщений.

Поскольку я использую AJAX для передачи массива упорядоченных идентификаторов записей, производительность действительно важна. Итак, я решил найти способ переупорядочить коллекцию сообщений, используя один запрос MySQL, и вот что я придумал:

<?php

function reorder_posts( $order = array() ) {
    global $wpdb;
    $list = join(', ', $order);
    $wpdb->query( 'SELECT @i:=-1' );
    $result = $wpdb->query(
        "UPDATE wp_posts SET menu_order = ( @i:= @i+1 )
        WHERE ID IN ( $list ) ORDER BY FIELD( ID, $list );"
    );
    return $result;
}

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




Статья была переведена для блога TechBlog.SDStudio.top

Источник: wpscholar.com