web-dev-qa-db-ja.com

投稿編集画面でタイトルURLを変更するにはどうすればいいですか?

私は様々な場所で検索し、正しい場所や以下に使用される用語を見つけるために戦っています。

例として投稿のみを使用しています。

Wp-adminですべての投稿を表示すると、その投稿のタイトルとその下に[編集]、[クイック編集]、[ゴミ箱]、[プレビュー]のリンクが表示されます。 post_row_actionsアクションフックを使用することで、タイトルの下のリンクを変更できますが、タイトル自体のリンクは変更できません。

投稿タイトルのリンクを変更して別のURLを開く方法はありますか。それとも同じフックで変更できますか?

フロントエンドのコンテンツ管理画面を開発していて、すべての編集リンクをWebサイトの前面を指すようにしたいです。

どうもありがとう :)

1
Kobus Beets

get_edit_post_linkフィルタ を使用してください。

add_filter('get_edit_post_link', 'get_edit_post_link_178416', 99, 3);

function get_edit_post_link_178416($link, $post_id, $context) {
    $scr = get_current_screen();

    if ($scr->id == 'edit-post' && $context == 'display') {
        return 'http://google.com';
    } else {
        return $link;
    }
}

ここでそれが使われているのを見ることができます

7
mjakic

フロントエンドのコンテンツ管理画面を開発していて、すべての編集リンクをWebサイトの前面を指すようにしたいです。

編集リンクをすべてFEに指定したい場合は、get_edit_post_linkフィルタソリューションを選択してください(Markoの回答を参照)。これは、コアまたはプラグインが get_edit_post_link() を呼び出すすべてのケースをカバーします。

しかし、「適切な」フロントエンドコンテンツ管理を実装したいのであれば、それを超えるべきです。私は、APIを迂回し、編集ポストのURL計算をハードコードするプラグインを見ました。さらに、ユーザーが管理URLを入力してデフォルトの編集投稿管理画面に表示される可能性が常にあります。

だから私はあなたがあなたのフロントエンドにデフォルトの投稿編集URLをリダイレクトするべきだと思います:

add_action(
    'admin_init',
    function()
        {
        global $pagenow;
        if($pagenow=='post.php'
          && isset($_GET['action']) && $_GET['action']=='edit'
          && isset($_GET['post']))
            {
            $post_id=$_GET['post'];
            // calculate $fe_edit_screen using $post_id
            wp_redirect($fe_edit_screen);
            exit;
            }
        },
    1
    );

このようにして、どのようにして投稿編集画面にアクセスしても、全員があなたのフロントエンドにリダイレクトされます。さらに、たとえば、特定の機能を持つ(または持たない)ユーザー、または特定の投稿の種類に限ってリダイレクトするなどの目的で、チェックを追加することもできます。

1
geomagas