amit
  • 0
Учитель

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

  • 0

Теперь с этими пользовательскими типами сообщений и другими фрагментами контента, которые не обязательно должны быть организованы в хронологическом порядке по дате, например: у клиента есть 100 футболок в качестве пользовательского типа сообщения «РУБАШКА», и он хочет установить порядок их появления..

Какой подход вы предлагаете использовать, чтобы позволить редактору / администратору сайта СОРТИРОВАТЬ свой заказ?

Share
  1. Можете ли вы привести несколько примеров того, по каким типам вещей он хотел бы их сортировать? Некоторые ответы могут быть лучше для одних вещей, чем для других.

    • 0
  2. вы можете фильтровать о таксономии

            // 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' ) );
    
    • 0
  3. Я бы посмотрел на экраны администратора генератора меню. Поскольку меню — это просто настраиваемый тип сообщения, я уверен, что некоторые из этих вещей можно использовать в качестве вдохновения.

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

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

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

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

    Или я что-то не так понимаю?

    • 0
  6. Что я предпочитаю делать, если я создаю тип сообщения в плагине или в коде, так это также добавить этот код, который позволяет вам установить порядок по умолчанию для внешнего и внутреннего интерфейса, а также установить переменную 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, но если это тип сообщения, в котором вы не хотите, чтобы пользователь беспокоился о сортировке себя, и вы хотите использовать что-то вроде title, это очень удобно.

    • 0

Оставить ответ

You must login to add an answer.