it-swarm.dev

visuell sortieren nach "benutzerdefinierten Beitragstypen" für Endbenutzer

Jetzt mit den benutzerdefinierten Beitragstypen und anderen Inhalten, die nicht unbedingt chronologisch nach Datum geordnet sein müssen, zum Beispiel: Der Kunde hat 100 T-Shirts als benutzerdefinierten Beitragstyp "SHIRT" und möchte deren Erscheinungsreihenfolge festlegen .

Welchen Ansatz schlagen Sie vor, um den Herausgeber/Administrator der Site die Bestellung sortieren zu lassen?

8
Amit
1
Drew Gourley

sie können nach 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' ) );
3
bueltge

Ich würde mir die Admin-Bildschirme des Menügenerators ansehen. Da es sich bei einem Menü nur um einen benutzerdefinierten Beitragstyp handelt, kann ich sicher sein, dass einiges davon als Inspiration verwendet werden kann.

0
Vid Luther

Wenn Sie nur eine Position für jedes "Shirt" festlegen möchten, können Sie die Menüreihenfolge in Ihrer WP_Query nach menu_order sortieren. Sie müssen wahrscheinlich eine Meta-Box erstellen, die die menu_order -Eigenschaft des Posts festlegt. Dann in deinem WP_Query:

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

Dies funktioniert ähnlich wie das Bestellen von Bildern auf der Registerkarte Media Upload Galerie, um die Menüreihenfolge für die Seite festzulegen.

Oder verstehe ich etwas falsch?

0
Joe Hoyle

Wenn ich den Post-Typ in einem Plugin oder Code erstelle, ist es mir lieber, diesen Code hinzuzufügen, mit dem Sie eine Standardreihenfolge für das Front-End und das Back-End festlegen und die GET-Variable in admin festlegen können dass der WordPress-Administrator die Änderung erkennt und den Pfeil nach oben zeigt, wenn Sie nach Titel, Datum oder anderen in der Admin-Tabelle angezeigten Elementen 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 menu_order die Standardeinstellung ist, ist dies nicht erforderlich, wenn Sie einen benutzerdefinierten Beitragstyp nach menu_order sortieren, aber wenn es sich um einen Beitragstyp handelt, bei dem sich der Benutzer nicht um das Sortieren selbst kümmern muss und Sie so etwas wie den Titel verwenden möchten , es ist sehr praktisch.

0
Andrew T

Um eine wirklich willkürliche Sortierreihenfolge zu haben (die mit keinem Post-Feld in Beziehung steht), müssen Sie ein Feld "Sortierwert" (oder "Gewicht") erstellen und einen numerischen Wert für jeden Artikel in dieses Feld eingeben. Sie können dann nach diesem Feld sortieren.

0
WhIteSidE