たとえば、必ずしも日付で時系列に整理する必要のない、これらのカスタム投稿タイプとその他のコンテンツを使用します。たとえば、クライアントはカスタム投稿タイプ「SHIRT」として100枚のTシャツを持っており、外観の順序を設定したいと考えています。 。
サイトの編集者/管理者に順序をソートさせるには、どのようなアプローチをお勧めしますか?
たとえば、必ずしも日付で時系列に整理する必要のない、これらのカスタム投稿タイプとその他のコンテンツを使用します。たとえば、クライアントはカスタム投稿タイプ「SHIRT」として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' ) );
メニュージェネレータの管理画面を見てみます。メニューはカスタムの投稿タイプなので、その一部はインスピレーションとして使用できると思います。
あなたがしたいすべてが各「シャツ」の位置を設定することであるなら、なぜメニューオーダーを使用するだけでなく、WP_Queryでmenu_orderでソートすることができます。投稿のmenu_order
プロパティを設定するメタボックスを作成する必要があります。次にあなたのWP_Query
:
$shirts = new WP_Query( 'post_type=shirt&orderby=menu_order&order=ASC' );
これはMedia Upload
、「ページ」のメニューの順序を設定するために、「ギャラリー」タブで画像を順序付ける方法と同様に機能します。
それとも私は何かを誤解していますか?
プラグインまたはコードで投稿タイプを作成する場合、私が好むのはこのコードも追加することです。これにより、フロントエンドとバックエンドのデフォルトの順序を設定し、管理でGET変数を設定することができます。 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でカスタム投稿タイプを並べ替える場合は必要ありませんが、ユーザーが自分で並べ替える必要がないようにし、タイトルなどを使用したい投稿タイプである場合、それは非常に便利です。