Sortieren Sie visuell die Bestellung "benutzerdefinierte Post -Typen" für Endbenutzer

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

  •  16-10-2019
  •  | 
  •  

Frage

Nun mit diesen benutzerdefinierten Post-Typen und anderen Inhaltsstücken, die nicht unbedingt chronologisch nach Datum organisiert werden müssen, zum Beispiel: Der Kunde hat 100 T-Shirts als benutzerdefiniertes Post-Typ "Shirt" und er möchte seine Aussehensreihenfolge festlegen .

Welchen Ansatz empfehlen Sie, den Editor/Admin der Website zu erlauben, ihre Bestellung zu sortieren?

War es hilfreich?

Andere Tipps

Sie können über Taxonomie filtern

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

Verwenden Sie diese Haken

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

Ich würde mir die Menügenerator -Administratorbildschirme ansehen. Da ein Menü nur ein benutzerdefinierter Beitragstyp ist, kann einige dieser Dinge als Inspiration verwendet werden.

Um eine wirklich willkürliche Sortierreihenfolge zu haben (völlig nichts mit jedem Postfeld zu tun), müssen Sie ein Feld "Sortierwert" (oder "Gewicht") erstellen und für jedes Element in diesem Feld einen numerischen Wert eingeben. Sie können dann auf diesem Feld sortieren.

Wenn Sie nur eine Position für jedes "Shirt" festlegen möchten, können Sie dann nicht die Menüauftrag benutzen, dann können Sie nach Menü_Order in Ihrem WP_QUERY sortieren. Sie müssen wahrscheinlich eine Meta -Box erstellen, die die Posts des Posts festlegt menu_order Eigentum. Dann in deinem WP_Query:

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

Dies würde ähnlich wie bei der Bestellung von Bildern in der Media Upload Galerie -Registerkarte für die Menübestellung der SET -Seite.

Oder verstehe ich etwas falsch?

Was ich lieber mache, wenn ich den Post-Typ in einem Plugin oder in Code erstelle Dass der WordPress -Administrator die Änderung erkennt und den Pfeil aufstellt, wenn Sie nach Titel, Datum oder etwas anderem, das Sie in der Administrator Tabelle anzeigen, sortieren.

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

Da Menus_order die Standardeinstellung ist, wird dies nicht benötigt, wenn Sie einen benutzerdefinierten Post -Typ nach Menü_order sortieren. Wenn es sich jedoch um einen Post -Typ handelt, bei dem der Benutzer nicht sortieren muss Es ist sehr praktisch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top