web-dev-qa-db-ja.com

管理ポスト更新投稿へのリダイレクト画面

投稿が作成または更新されたときに、すべての投稿のリスト/テーブルページに戻るフックを使用できますか。投稿タイプをターゲットにすることも可能であれば、それは割れているでしょう。

それは私が知っているし、それについて投げかけたことを主張してきた本当に愚かな要求ですが、ユーザーフレンドリーではないにしてもそれが達成可能であることを確かめたかったのです。

スティーブ

2
user180386

redirect_post_locationフィルターと admin_url() 関数を使用してください。

add_filter( 'redirect_post_location', 'wpse_124132_redirect_post_location' );
/**
 * Redirect to the edit.php on post save or publish.
 */
function wpse_124132_redirect_post_location( $location ) {

    if ( isset( $_POST['save'] ) || isset( $_POST['publish'] ) )
        return admin_url( "edit.php" );

    return $location;
}

別のURLにリダイレクトするには、URLの/wp-admin/部分の後にすべてを追加します。意図したURLが"edit.php"であるため、私はhttp://example.com/wordpress/wp-admin/edit.phpを使用しました。


redirect_post_locationフィルタは コーデックスフィルタリファレンス には記載されていません。これは73行目の\wp-admin\post.phpファイルにあります。これはトランクバージョンのWordPressのWordPressコードです。

wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) );

ご覧のとおり、$post_idまたはそこから取得した情報に基づいて$post_idリダイレクトをテストすることもできます。フィルタのこの2番目のパラメータを使用するには、priorityおよび_accepted_args_パラメータを フィルタ呼び出し に渡す必要があります。

add_filter( 'redirect_post_location', 'wpse_124132_redirect_post_location', 10, 2 );

そして関数パラメータを更新します。

/**
 * Redirect to the edit.php on post save or publish.
 */
function wpse_124132_redirect_post_location( $location, $post_id ) {

    if ( isset( $_POST['save'] ) || isset( $_POST['publish'] ) ) {
        // Maybe test $post_id to find some criteria.
        return admin_url( "edit.php" );
    }

    return $location;
}
6