Визуально сортируйте заказ «пользовательские типы публикаций» для конечных пользователей

wordpress.stackexchange https://wordpress.stackexchange.com/questions/2

  •  16-10-2019
  •  | 
  •  

Вопрос

Теперь с этими пользовательскими типами публикаций и другими кусочками контента, которые не обязательно должны быть организованы хронологически по дате: у клиента есть 100 футболок в качестве пользовательского пост «рубашка», и он хочет установить их приказ о выходе Анкет

Какой подход вы предлагаете использовать для того, чтобы позволить редактору/администратору сайта сортировать свой заказ?

Это было полезно?

Решение

Я мог бы предложить это:

http://drewgourley.com/order-up-custom-ordering-for-wordpress/

Другие советы

Вы можете фильтровать о таксономии

        // to filter by category
    function restrict_manage_posts() {
        global $typenow;

        if ( FB_CPT_POST_TYPE_1 == $typenow ) {
            $args = array('orderby' => 'count', 'hide_empty' => true);
            echo $this->get_taxonomy_html_select(FB_CPT_TAXONOMY_TYPE_1, $args);
        }
    }

    function get_taxonomy_html_select($taxonomy_name, $args) {

        $taxonomy = get_taxonomy($taxonomy_name);
        $terms = get_terms($taxonomy_name, $args);
        $label = __( 'Show all ' . $taxonomy->label, FB_CPT_TEXTDOMAIN );
        $html = array();
        $html[] = '<select style="min-width:155px;" id="' . $taxonomy_name . '" name="' . $taxonomy_name . '" class="postform">';
        $html[] = '<option value="0">' . $label . '</option>';
        if ( isset($_GET[$taxonomy_name]) )
            $this_term = $_GET[$taxonomy_name];
        else
            $this_term = '';
        foreach($terms as $term) {
            $default = ( $this_term == $term->term_id ? ' selected="selected"' : '' );
            $value = esc_attr($term->name);
            $value = $value . '&nbsp;&nbsp;(' . (int)$term->count . ')';
            $html[] = "\t" . '<option value="' . $term->term_id . '"' . $default . '>' . $value . '</option>';
        }
        $html[] = '</select>' . "\n";
        return implode( "\n", $html );
    }

    function request($request) {
        global $pagenow;

        if ( is_admin() && 'edit.php' == $pagenow && isset( $request[FB_CPT_TAXONOMY_TYPE_1] ) && FB_CPT_POST_TYPE_1 == $request[FB_CPT_TAXONOMY_TYPE_1] ) {
            $request['taxonomy'] = FB_CPT_TAXONOMY_TYPE_1;
            $request['term'] = get_term($request[FB_CPT_TAXONOMY_TYPE_1], FB_CPT_TAXONOMY_TYPE_1)->name;
            unset($request['name']);
        }

        return $request;
    }

Используйте эти крючки

            // to filter custom post type per custom taxonomy
        add_action( 'restrict_manage_posts', array( &$this, 'restrict_manage_posts') );
        add_action( 'request', array( &$this, 'request' ) );

Я бы посмотрел на экраны администратора генератора меню. Поскольку меню - это просто пользовательский тип поста, я уверен, что некоторые из этих вещей можно использовать в качестве вдохновения.

Чтобы иметь по -настоящему произвольный порядок сортировки (совершенно не связанный с каким -либо полем Post), вам нужно создать поле «сортировки» (или «вес») и ввести числовое значение для каждого элемента в этом поле. Затем вы можете сортировать на этом поле.

Если все, что вы хотите сделать, это установить позицию для каждой «рубашки», то почему бы не пользоваться заказом меню, то вы можете сортировать по menu_order в своем wp_query. Вам, вероятно, придется сделать мета -коробку, которая устанавливает сообщение menu_order имущество. Тогда в твоем WP_Query:

$shirts = new WP_Query( 'post_type=shirt&orderby=menu_order&order=ASC' );

Это будет работать так же, как вы заказываете изображения в Media Upload Вкладка «Галерея» для заказа меню «Набор страницы».

Или я что -то недоразумю?

То, что я предпочитаю делать, если я создаю тип Post в плагине или в коде, это также добавить этот код, который позволяет установить порядок по умолчанию для передней и задней части, а также установить переменную Get в администрато что администратор WordPress распознает изменение и поднимает стрелку, если вы сортируете по заголовку, дате или чем -то еще, что вы показываете в таблице администратора.

add_filter( 'pre_get_posts' , 'my_cpt_order' ); // Runs before the posts are fetched
function my_cpt_order( $query ) {
    // Check query and alter only the query needed
    //echo '<PRE>'; print_r($query); echo '</PRE>'; 
    if ($query->query['post_type'] == 'cpt' && !isset($query->query['orderby'])) {
        $query->set( 'orderby' , 'title' );
        $query->set( 'order' , 'asc' );
        //get the arrow to show up over title in admin
        if (is_admin()) {
            $_GET['orderby'] = 'title';
            $_GET['order'] = 'asc';
        }
    } //if
} //my_cpt_order

Поскольку Menu_order - это по умолчанию, это не требуется, если вы сортируете пользовательский тип поста от menu_order, но если это тип поста, где вы не хотите, чтобы пользователь беспокоился о сортировке, и вы хотите использовать что -то вроде заголовка , это очень удобно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top