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

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

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

7 голосов | спросил Amit 11 PM000000110000005831 2010, 23:32:58

6 ответов


0

Я мог бы предложить следующее:

http://drewgourley.com/order-up-custom-ordering -для-WordPress /

ответил Drew Gourley 18 +04002011-10-18T23:50:44+04:00312011bEurope/MoscowTue, 18 Oct 2011 23:50:44 +0400 2011, 23:50:44
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' ) );
ответил bueltge 13 PM00000060000005131 2010, 18:30:51
0

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

ответил Vid Luther 11 PM000000110000001831 2010, 23:37:18
0

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

ответил WhIteSidE 12 PM00000080000003931 2010, 20:06:39
0

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

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

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

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

ответил Joe Hoyle 13 PM00000090000005731 2010, 21:44:57
0

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

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, но если это тип сообщения, в котором вы не хотите, чтобы пользователю приходилось беспокоиться о сортировке себя и вы хотите использовать что-то вроде названия, это очень удобно.

ответил andrewteg 13 PM00000070000003731 2013, 19:33:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132