Sortieren Sie visuell die Bestellung "benutzerdefinierte Post -Typen" für Endbenutzer
-
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?
Lösung
Ich könnte diese vorschlagen:
http://drewgourley.com/order-up-custom-ordering-for-wordpress/
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 . ' (' . (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.