web-dev-qa-db-ja.com

投稿IDごとの管理投稿リスト(edit.php)

私はまとめて投稿を作成するプラグインを書いています。作成した投稿の特定のパラメータをユーザーが事前に設定できるようにします。しかし、投稿が作成された後に詳細を微調整するために、WordPressのデフォルトの "All Posts"(edit.php)インターフェースを使用することは有用でしょう。私はclass-wp-list-table.phpを見ました、そして、その機能を複製することは多くの仕事になるでしょう。

最善の解決策は、ユーザーをedit.phpに送信することです - 私のプラグインによって作成された投稿のみに制限されます。私は投稿のIDを持っているので、私はedit.php?id=1&id=2のような解決策を探していて、それらのIDを持つ投稿だけを持つNiceリストテーブルを明らかにしています。

1
P_Enrique

これは pre_get_posts を使って実現できます。

すべての変数名に接頭辞を付けることが重要です。id予約語リスト には含まれていないようですが、とにかくこの慣例は予期しないバグを避けます。

/**
 * Usage:
 * http://example.com/wp-admin/edit.php?my_pids=4088,4090,4092,4094
 */
add_filter( 'pre_get_posts', 'limit_post_list_wpse_96418' );

function limit_post_list_wpse_96418( $query ) 
{
    // Don't run on frontend
    if( !is_admin() )
        return $query;

    global $pagenow;

    // Restrict to Edit page
    if( 'edit.php' !== $pagenow )
        return $query;

    // Check for our filter
    if( !isset( $_GET['my_pids'] ) )
        return $query;

    // Finally, filter
    $limit_posts = explode( ',', $_GET['my_pids'] ); // Convert comma delimited to array    
    $query->set( 'post__in', $limit_posts );      

    return $query;
}
0
brasofilo