web-dev-qa-db-ja.com

複数のカスタム投稿タイプの投稿オーダーをドラッグアンドドロップ

私は単一のページに表示している2つのカスタム投稿タイプ(Branding ElementsとProducts)があり、クライアントはページのソート順を制御できるようにしたいと考えています。

クライアントがドラッグアンドドロップインターフェースで2つの投稿タイプを並べ替えるための方法を作成するための最善策は何でしょうか。 2種類の投稿タイプがあるため、現在利用可能なプラグインはどれも適していません。

6
mchandleraz

free ドラッグ/ドロップ 機能を得るためにWordPressナビゲーションメニューUIを利用するのが一般的です。

このサイトにはすでにいくつかの答えがあると思います。これは私よりも上手く説明していますが、あなたのために見つけることはできないようです。それでは、簡単な例を1つ作成してみましょう。

  1. Appearance/Menus に移動し、 メニュー を作成します。 mylistメニューID.

  2. それから ドラッグ/ドロップ そのメニューに投稿し、 save itに移動します。

  3. 次のショートコードをページ/投稿コンテンツに追加します。

    [wpd_list menu_id="mylist"]
    

それをサポートする次のコードスニペットを使用してください。

/**
 * Shortcode [wpd_list] to display posts ordered by the nav menu UI
 */
add_shortcode( 'wpd_list', function( $atts = array(), $content = null )
{
    $atts  = shortcode_atts( 
        array( 'menu_id' => '', ), 
        $atts, 
        'shortcode_wpd_list' 
    );
    $items = wp_get_nav_menu_items( sanitize_key( $atts['menu_id'] ) );
    $ids   = wp_list_pluck( $items, 'object_id' );   // Don't use db_id or page_name!
    $li    = '';
    $q     = new WP_Query( 
        array( 
            'post_type' => 'any', 
            'post__in'  => (array) $ids,
            'orderby'   => 'post__in',         // Must have for the correct order!
        ) 
    );
    while( $q->have_posts() )
    { 
        $q->the_post();
        $li .= sprintf( 
            '<li><h2><a href="%s">%s</a></h2></li>',    // Modify this HTML to your needs!
             get_permalink(), 
             get_the_title() 
        );
    }
    wp_reset_postdata();
    return ! empty( $li ) ? sprintf( '<ul>%s</ul>', $li ) : '';
} );

シモンズ:この例を書くとき、私は最初に少なくとも2つの間違いをしました;-)

ナビゲーションメニューの順番に合わせるため、最初にposts__inの順番で投稿を取得するのを忘れていました。

次に、投稿IDとしてdb_idフィールドの代わりにobject_idを使用しました。

それを修正した後、これは予想通りに動作しているように見えたので、今ここに投稿するだけです;-)

6
birgire

現在の設定ではうまくいきません。単一の投稿タイプを作成し、「Branding Elements」と「Products」という2つの用語を持つカスタム分類法で投稿を分割する必要があります。これは、ドラッグアンドドロップで並べ替えることができる1つの管理可能なリストに2つの投稿タイプを現実的に組み合わせる唯一の方法です。

そこから、クエリの'order' => 'ASC', 'orderby' => 'menu_order'$argsを使って順番を表示し、 Simple Page Ordering を使ってそれらをダッシュ​​ボードにドラッグアンドドロップできます。

また、投稿タイプを登録するときには'hierarchical' => 'page-attributes'を含める必要があります。投稿を並べ替えることができるように。

2
deflime

カテゴリを使う.

両方の投稿タイプに適用できるカテゴリを作成してから、このプラグインを使用します。

https://wordpress.org/plugins/custom-post-order-category/ /

そのカテゴリ内のすべての投稿を注文する。

その目的は純粋にこのプラグインが使う2つの投稿タイプを関連付けるのを助けることであるのであなたのウェブサイトのフロントエンドにカテゴリを表示しないでください。

0
Josh Burson