固定ページURLからデフォルト投稿/カスタム投稿の最新投稿ページへリダイレクト
phpのheader()関数を使う。
- 固定ページphpを用意
- WP_query, header/Location 関数でリダイレクト設定
- 固定ページで新規投稿
- 用意した固定ページphpをテンプレート指定して公開
デフォルト投稿
投稿にカテゴリを設定、属する投稿の最新投稿ページへリダイレクト。
1 2 3 4 5 6 7 8 9 10 11 12 | <?php /* Template Name: (任意のテンプレート名) */ ?> <?php $loop = new WP_query('category_name=(カテゴリのスラッグ)&showposts=1'); while ($loop->have_posts()): $loop->the_post(); $url = get_permalink($post->ID); endwhile; header("Location: ".$url); ?> |
カスタム投稿タイプ
投稿タイプスラッグを指定、その最新投稿ページへリダイレクト。
1 2 3 4 5 6 7 8 9 10 11 12 | <?php /* Template Name: (任意のテンプレート名) */ ?> <?php $loop = new WP_query('post_type=(投稿タイプスラッグ)&showposts=1'); while ($loop->have_posts()): $loop->the_post(); $url = get_permalink($post->ID); endwhile; header("Location: ".$url); ?> |
注意点
header()関数は一番最初にコールされる必要があるため、改行やスペースが入っているとWarningエラーになる。
1 2 3 4 5 6 7 8 9 | <?php /* Template Name: (任意のテンプレート名) */ ?> <?php header() ?> |
ではなく、
1 2 3 4 5 6 7 8 | <?php /* Template Name: (任意のテンプレート名) */ ?> <?php header() ?> |
さくらインターネットのエラー
コントロールパネルで「WAF (Webアプリケーションファイアウォール)」を設定すると、Forbiddenエラーで下書きや投稿が一切できなくなる。
どうやら header/Location を不正攻撃だと誤検知するようだ。
コメントを投稿する