【WordPress】投稿・カスタム投稿のプレビューリンク先を変更する方法

WordPressでは、通常、投稿やカスタム投稿のプレビューリンクは自動生成されますが、特定の条件に応じてリンク先をカスタマイズしたい場合があります。例えば、一覧ページはあるが、投稿の詳細ページは存在しないサイトなどです。本記事では、get_preview_post_linkフィルターフックを使って、プレビューリンクの変更方法を紹介します。

プレビューリンクの変更に使うフィルターフック

get_preview_post_linkフィルターフックは、プレビューリンクが生成される際に、そのリンクをカスタマイズするために使用します。このフックを利用して、投稿やカスタム投稿のプレビューリンク先を自由に変更できます。

function custom_preview_post_link($preview_link, $post) {
    // ここで変更したいURLを定義
    $custom_preview_url = home_url('/custom-preview-path/') . '?p=' . $post->ID;

    // 必要に応じてカスタム投稿タイプごとに分岐
    if ($post->post_type == 'custom_post_type') {
        return $custom_preview_url;
    }

    return $preview_link;
}
add_filter('get_preview_post_link', 'custom_preview_post_link', 10, 2);

プレビューリンクをカスタマイズする手順

上記のコードでは、get_preview_post_linkフックを使用して、投稿のプレビューリンクを変更しています。具体的には、home_url()を使ってサイトのURLを取得し、クエリパラメータで投稿IDを追加することで、新しいプレビューURLを生成します。

カスタム投稿タイプごとにリンク先を変更する

カスタム投稿タイプごとに異なるプレビューリンクを設定するには、post_typeの条件分岐を使います。以下の例では、newsというカスタム投稿タイプと、productsというカスタム投稿タイプで別々のリンク先を指定しています。

function custom_preview_post_link($preview_link, $post) {
    if ($post->post_type == 'news') {
        // News投稿のプレビューリンク先
        return home_url('/news-preview/') . '?p=' . $post->ID;
    } elseif ($post->post_type == 'products') {
        // Products投稿のプレビューリンク先
        return home_url('/products-preview/') . '?p=' . $post->ID;
    }

    return $preview_link;
}
add_filter('get_preview_post_link', 'custom_preview_post_link', 10, 2);

実際の運用例

例えば、特定のカスタム投稿をプレビューするときに、専用のページデザインで確認したい場合や、プレビュー時に特定のパラメータを渡したい場合に、この方法が役立ちます。条件に応じて、プレビューのリンク先を柔軟に変えることで、より効率的にWordPressサイトを運営することができます。

まとめ

get_preview_post_linkフィルターフックを使用することで、WordPressの投稿やカスタム投稿のプレビューリンクを自由にカスタマイズできます。複数のカスタム投稿タイプがある場合でも、条件に応じてリンクを変えることができ、サイト運営がよりスムーズになります。この方法を活用して、プレビュー機能を自分のサイトに最適化してみましょう。