私はvideo
というカスタム投稿タイプを作成し、Playlist_Order
(menu_order
フィールドを変更する)というプラグインを使用して、ユーザーがドラッグアンドドロップインターフェイスを使用してプレイリスト内の動画を並べ替えることができるようにしました。
ただし、新しい投稿を追加すると、デフォルトのmenu_order
値に0
が指定されているため、動画が再生リストの一番上に表示されます。
新しい動画投稿を作成する際には、再生リストの最後に表示することをお勧めします。つまり、すべてのvideo
投稿タイプをクエリし、最大のmenu_order
値を見つけて、新しい投稿にこの+1
を設定します。
どうやってこれを実装できますか?
こんにちは@ fxfuture:
あなたが探しているのはwp_insert_post_data
フックです。このコードをあなたのテーマのfunctions.php
ファイルの一番下に追加したり、プラグインに追加したりすることができます。
add_filter('wp_insert_post_data','my_wp_insert_post_data',10,2);
function my_wp_insert_post_data($data, $postarr) {
$post_type = 'video';
if ($data['post_type']==$post_type && get_post($postarr['ID'])->post_status=='draft') {
global $wpdb;
$data['menu_order'] = $wpdb->get_var("SELECT MAX(menu_order)+1 AS menu_order FROM {$wpdb->posts} WHERE post_type='{$post_type}'");
}
return $data;
}
add_filterメソッドの最後の10個と2個の引数は、実行の優先順位(オプションのデフォルト= 10)と新しい関数が受け取る引数の数(オプションのデフォルト= 1)です。
上記のコードに表示される唯一の理由は、デフォルトの引数の数を変更することです。
詳細はこちら http://codex.wordpress.org/Function_Reference/add_filter