WordPressの記事IDで判定して転送~PHP・headerとget_the_IDで対応、the_IDとの挙動の違いも
| 更新: 2024/02/12 | 2058文字
今回は、前回の『別ディレクトリにWP記事を出す』の続きで、新しいディレクトリに転送するようにしてみます。 使うのは『header』『get_the_ID』。実際の利用例、似ている『the_ID』との違いも見ながら、効果を確認していきましょう。
目次
今回行いたい内容~WPインストールディレクトリでは、意図したCSSが出ないので、表示用ディレクトリに転送したい
前回まで行っていた『別ディレクトリのコーポレートサイト記事をWPで一括管理』の続きです。とりあえず『WPインストールディレクトリ上では記事が準備』『表示ディレクトリのほうも準備ok』となりました。しかし、これをWPインストールディレクトリ上で表示されるとまずいのです。
WPはこのサイト(よんどけコラム)にインストールしてあるんですが、別ディレクトリ表示用の記事が、万が一(カノニカルURLなどは指定したが)こちらのディレクトリに表示した場合、CSSなどが読み込まれず、意図した表示になりません。トップページ用なんですけど、まったくトップページって感じがしません。
トップに使おうとしていた画像についても、border-radiusで丸くなるはずだったんですが、ボックスがそのまま出るので、非常にダサくなります。
そのため『ドメイン/music-creation/archives/wp-web/wp-web-top/(トップページの場合・パーマリンク設定によって異なります)』でアクセスされた場合、表示用ディレクトリの『ドメイン/wp-web/』というURLに転送するという対応をしてみます。
ID数値取得get_the_ID()と、PHP・header(‘Location: 〇〇/’)で、転送を行う
まずは、転送前・転送後のURL一覧・記事idの一覧を作っておくとラクです。作ったあとは、WPの使用中テーマ・ヘッダー部分に、こんな感じで。 WP組み込みファンクションの『get_the_ID』で、変数$post_idに記事idを格納。あとはif条件分岐を使って、例えば『トップページ用が7261番なので、表示用の/wp-web/にheader(‘Location: 〇〇/’)で転送』という形にしました。
=が3つ(===)となっているのは、『数値判定されなかった』というのが以前あったためです(===は文字列型・数値型などの判定もする)。そのほか、処理ストップ用の exit;も一応いれておきます。
転送のおかげで『ドメイン/music-creation/archives/wp-web/wp-web-top/』に入った場合でも、新しくつくったディレクトリのほうへ転送。
こっちのほうですと、意図したとおりにCSSが効きました。
WP組み込みファンクション『the_ID』だとどうなる?
WordPressにはID数値取得のget_the_IDによく似た『the_ID』というものもあります。ついでにですが、こちらも試してみましょうか。厳密には挙動がことなります。こちらは『記事IDの出力用』です。例えば同じように『変数に格納して判定』しようとしても・・
『数値IDの取得』ではなく、『ID出力』なので、この記事に割り当てられている記事ID(ココでは7261番)が単純に出ます。記事メタデータとして表示する場合は、こちらを使います。
あとがき・まとめ
- 表示用じゃないディレクトリでアクセスされた場合、意図したレイアウトで表示されないので、表示用ディレクトリに転送
- 『get_the_ID』でIDを取り、if条件分岐でIDごとにPHP『header(‘Location: 〇〇/’)』で転送先を指定して対応できた
- 『the_ID』だと、単純にIDを表示
まとめるとこんな形でした。PHP転送や、WPのID関連組み込みファンクションについて押さえていただけたと思います。 これ以外にも『IDを指定して条件分岐』などにも使えると思います。ただし公開後で、検索エンジン評価などを引き継ぎたいときは、htaccessで301リダイレクトなどがおすすめです。
参考リンク
- https://www.php.net/manual/ja/function.header.php
- https://wpdocs.osdn.jp/関数リファレンス/get_the_ID
- https://wpdocs.osdn.jp/テンプレートタグ/the_ID
(今回の参考リンクです。PHP公式サイトやWordPress codex日本語版。)
【カテゴリ】- WordPressファンクションetc
【タグ】- header(PHP), URLの転送, WordPress