mengurutkan secara visual "jenis posting khusus" untuk pengguna akhir


9

Sekarang dengan jenis posting khusus dan potongan konten lainnya yang tidak perlu diatur secara kronologis berdasarkan tanggal, misalnya: klien memiliki 100 T-Shirt sebagai jenis posting khusus "SHIRT" dan dia ingin mengatur urutan penampilan mereka .

Pendekatan apa yang Anda sarankan untuk membiarkan editor / admin situs SORT pesanan mereka?


Bisakah Anda memberikan beberapa contoh hal-hal seperti apa yang ia inginkan untuk disortir? Beberapa jawaban mungkin lebih baik untuk beberapa hal daripada yang lain.
MikeSchinkel

Mike: mungkin kaos di mana dia ingin menjadi yang pertama, atau umumnya posting yang dimasukkan pengguna tidak dalam urutan yang benar.
Amit

Bagi mereka yang masih mencari yang menjalankan posting ini, ada beberapa plugin WP yang bagus yang menyelesaikan masalah ini. Saya baru saja mengimplementasikan yang ini: wordpress.org/extend/plugins/post-types-order

Jawaban:



3

Anda dapat memfilter tentang taksonomi

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

gunakan kait ini

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

Saya mencoba menerapkannya tetapi tidak berhasil untuk saya .. apakah ada langkah sebelumnya yang harus saya ambil? mendeklarasikan beberapa taksonomi? Terima kasih!
Amit

ini contoh di kelas saya untuk tipe posting khusus; Anda harus mengubah array (& ini dll.) untuk tidak digunakan dalam kelas dan FB_CPT_TAXONOMY_TYPE_1 konstan adalah taksonomi kustom pertama saya dan seterusnya dan FB_CPT_POST_TYPE_1 konstan adalah jenis posting kustom pertama saya
bueltge

silakan lihat jawaban ini ( wordpress.stackexchange.com/questions/45/… ), serupa
bueltge

Saya mengerti .. Saya mungkin tidak menjelaskan diri saya dengan sangat baik - yang saya maksud adalah membiarkan pengguna mengatur urutan dan urutan baru ini harus tercermin pada front-end. apa yang sebenarnya saya cari adalah sesuatu seperti menu baru gui tetapi untuk jenis posting / posting kustom.
Amit

0

Saya akan melihat layar admin menu generator. Karena menu hanyalah jenis posting khusus, saya yakin beberapa hal dapat digunakan sebagai inspirasi ..


itu sama sekali bukan ide yang buruk, tetapi apakah menu memiliki jumlah item yang tidak terbatas (lebih dari 100)? bukankah akan sedikit mengasapi memiliki item entri untuk setiap posting?
Amit

0

Agar memiliki urutan pengurutan yang benar-benar sewenang-wenang (sama sekali tidak terkait dengan bidang pos mana pun), Anda harus membuat bidang "nilai sortir" (atau "bobot") dan masukkan nilai numerik untuk setiap item dalam bidang tersebut. Anda kemudian dapat mengurutkan pada bidang itu.


0

Jika semua yang ingin Anda lakukan adalah mengatur posisi untuk setiap "Kaos", maka mengapa tidak hanya pengguna Urutan Menu, maka Anda dapat mengurutkan berdasarkan menu_order di WP_Query Anda. Anda mungkin harus membuat kotak meta yang mengatur menu_orderproperti posting . Kemudian di Anda WP_Query:

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

Ini akan bekerja sama dengan cara Anda memesan gambar di Media Uploadtab Galeri, untuk mengatur Menu Order Halaman.

Atau apakah saya salah paham akan sesuatu?


Anda sudah benar, tetapi pikirkan pengguna .. dia harus pergi secara manual ke setiap posting dan menetapkan nomor di kotak meta .. tidak terlalu ramah ..
Amit

Memasukkannya ke dalam Edit Cepat akan membuat itu jauh lebih mudah, tapi ya itu bisa memakan waktu.
Joe Hoyle

0

Apa yang saya lebih suka lakukan jika saya membuat jenis posting dalam plugin atau dalam kode adalah juga menambahkan kode ini, yang memungkinkan Anda untuk mengatur urutan default untuk front dan back-end dan juga mengatur variabel GET di admin sehingga bahwa admin WordPress mengenali perubahan dan menempatkan panah ke atas jika Anda mengurutkan berdasarkan judul, tanggal, atau apa pun yang Anda tampilkan di tabel 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

Karena menu_order adalah default, ini tidak diperlukan jika Anda mengurutkan jenis posting khusus berdasarkan menu_order tetapi jika itu adalah tipe posting di mana Anda tidak ingin pengguna harus khawatir tentang pengurutan diri mereka dan Anda ingin menggunakan sesuatu seperti judul , ini sangat berguna.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.