エンドユーザー向けの「カスタムポストタイプ」の視覚的にソート
-
16-10-2019 - |
質問
現在、これらのカスタムポストタイプやその他のコンテンツのビットを使用して、必ずしも日付までに時系列に整理する必要はありません。たとえば、クライアントにはカスタムポストタイプ「シャツ」として100個のTシャツがあり、外観の注文を設定したいと考えています。 。
サイトの編集者/管理者に注文を並べ替えるために取ることを提案するアプローチは何ですか?
解決
私はこれらを提案するかもしれません:
http://drewgourley.com/order-up-custom-ordering-for-wordpress/
他のヒント
分類局についてフィルタリングできます
// 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;
}
このフックを使用してください
// to filter custom post type per custom taxonomy
add_action( 'restrict_manage_posts', array( &$this, 'restrict_manage_posts') );
add_action( 'request', array( &$this, 'request' ) );
メニュージェネレーター管理画面を見ていきます。メニューは単なるカスタム投稿タイプであるため、その一部はインスピレーションとして使用できると確信しています。
oが真に任意の並べ替え順序(ポストフィールドとはまったく関係のない)を持っているため、「ソート値」(または「重量」)フィールドを作成し、そのフィールドの各アイテムの数値を入力する必要があります。その後、そのフィールドを並べ替えることができます。
「シャツ」ごとにポジションを設定することだけである場合は、メニューの注文だけではないのに、wp_queryでmenu_orderで並べ替えることができます。おそらく、投稿を設定するメタボックスを作成する必要があります menu_order
財産。それからあなたの中で WP_Query
:
$shirts = new WP_Query( 'post_type=shirt&orderby=menu_order&order=ASC' );
これは、で画像を注文する方法と同様に機能します Media Upload
セットページのメニューオーダー用のギャラリータブ。
それとも私は何かを誤解していますか?
プラグインまたはコードで投稿タイプを作成している場合に私がやりたいことは、このコードを追加することです。 WordPress管理者が変更を認識し、タイトル、日付、または管理テーブルに表示されている他のもので並べ替えている場合は、矢印を上げます。
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
MENU_ORDERはデフォルトであるため、MENU_ORDERでカスタム投稿タイプをソートする場合は必要ありませんが、ユーザーが自分自身のソートを心配する必要がなく、タイトルのようなものを使用したい投稿タイプの場合、とても便利です。