sắp xếp trực quan sắp xếp thứ tự các loại bài đăng tùy chỉnh


9

Bây giờ với các loại bài đăng tùy chỉnh và các bit nội dung khác không nhất thiết phải được sắp xếp theo thứ tự thời gian theo ngày, ví dụ: khách hàng có 100 áo phông làm loại bài đăng tùy chỉnh "SHIRT" và anh ta muốn đặt thứ tự xuất hiện của họ .

Cách tiếp cận nào bạn đề xuất thực hiện khi để cho biên tập viên / quản trị viên của trang web sắp xếp thứ tự của họ?


Bạn có thể đưa ra một số ví dụ về loại những thứ anh ấy muốn sắp xếp chúng theo? Một số câu trả lời có thể tốt hơn cho một số điều so với những người khác.
MikeSchinkel

Mike: có thể là áo phông mà anh ấy muốn chắc chắn là đầu tiên, hoặc nói chung là bất kỳ bài đăng nào mà người dùng chèn không đúng thứ tự.
Amit

Đối với những người vẫn đang tìm kiếm chạy trên bài đăng này, có một số plugin WP tốt để giải quyết vấn đề này. Tôi vừa mới thực hiện điều này: wordpress.org/extend/plugins/post-types-order

Câu trả lời:



3

bạn có thể lọc về phân loại

        // 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;
    }

sử dụng móc này

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

Tôi đã cố gắng thực hiện nó nhưng nó không hiệu quả với tôi .. tôi có nên thực hiện các bước trước đây không? Khai báo một số nguyên tắc phân loại? cảm ơn!
Amit

đó là một ví dụ trên lớp của tôi cho loại bài tùy chỉnh; bạn phải thay đổi mảng (& cái này, v.v.) để không sử dụng trong một lớp và hằng số FB_CPT_TAXONOMY_TYPE_1 là phân loại tùy chỉnh đầu tiên của tôi và do đó, quảng cáo liên tục FB_CPT_POST_TYPE_1 là loại bài đăng tùy chỉnh đầu tiên của tôi
bueltge

vui lòng xem câu trả lời này ( wordpress.stackexchange.com/questions/45/ ,), tương tự
bueltge

Tôi hiểu .. Có lẽ tôi đã không giải thích bản thân mình rất tốt - ý tôi là cho phép người dùng THIẾT LẬP thứ tự sắp xếp và thứ tự mới này sẽ được phản ánh ở mặt trước. những gì tôi thực sự đang tìm kiếm là một cái gì đó giống như các menu mới gui nhưng cho các bài đăng / loại bài đăng tùy chỉnh.
Amit

0

Tôi sẽ nhìn vào màn hình quản trị trình tạo menu. Vì một menu chỉ là một loại bài đăng tùy chỉnh, tôi chắc chắn một số nội dung đó có thể được sử dụng làm nguồn cảm hứng ..


đó không phải là một ý tưởng tồi, nhưng các menu có chứa vô số mục (hơn 100) không? sẽ không phải là một chút bực bội để có một mục nhập cho mỗi bài viết?
Amit

0

Để o có thứ tự sắp xếp thực sự tùy ý (hoàn toàn không liên quan đến bất kỳ trường bài nào), bạn cần tạo trường "sắp xếp giá trị" (hoặc "trọng số") và nhập giá trị số cho từng mục trong trường đó. Sau đó bạn có thể sắp xếp trên trường đó.


0

Nếu tất cả những gì bạn muốn làm là đặt một vị trí cho mỗi "Áo", thì tại sao không chỉ sử dụng Thứ tự Menu, sau đó bạn có thể sắp xếp theo menu_order trong WP_Query của bạn. Bạn có thể sẽ phải tạo một hộp meta đặt thuộc tính của bài đăng menu_order. Sau đó, trong của bạn WP_Query:

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

Điều này sẽ hoạt động tương tự như cách bạn đặt hàng hình ảnh trong Media Uploadtab Thư viện, để đặt Thứ tự Menu của Trang.

Hay tôi đang hiểu lầm điều gì đó?


bạn hiểu đúng, nhưng hãy nghĩ đến người dùng .. anh ta cần phải truy cập thủ công vào từng bài đăng và đặt một số trong hộp meta .. không thân thiện lắm ..
Amit

Kết hợp nó vào Quick Edit sẽ giúp việc đó dễ dàng hơn rất nhiều, nhưng vâng, nó có thể tốn thời gian.
Joe Hoyle

0

Điều tôi thích làm hơn nếu tôi tạo loại bài đăng trong plugin hoặc trong mã là thêm mã này, cho phép bạn đặt thứ tự mặc định cho mặt trước và mặt sau và cũng đặt biến GET trong quản trị viên quản trị viên WordPress nhận ra sự thay đổi và đặt mũi tên lên nếu bạn sắp xếp theo tiêu đề, ngày tháng hoặc bất cứ điều gì khác mà bạn đang hiển thị trong bảng quản trị.

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

Vì menu_order là mặc định nên không cần thiết nếu bạn sắp xếp loại bài đăng tùy chỉnh theo menu_order nhưng nếu đó là loại bài đăng mà bạn không muốn người dùng phải lo lắng về việc tự sắp xếp và bạn muốn sử dụng một cái gì đó như tiêu đề , nó rất tiện dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.