webコンテンツを徹底強化!WordPressサイト制作とプラグイン&テーマ情報・メンテ/エラー対応から、PHP/CSS/javascript、動画・音・イラスト等制作まで扱うコラム
マルチメディアコンテンツ制作読んどけ☆コラム

WordPressの記事IDで判定して転送~PHP・headerとget_the_IDで対応、the_IDとの挙動の違いも

      2021/02/04

今回は、前回の『別ディレクトリに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リダイレクトなどがおすすめです。

参考リンク

(今回の参考リンクです。PHP公式サイトやWordPress codex日本語版。)


【カテゴリ】 - PHP・データベースetc
【タグ】 - ,

  関連記事

【WordPressで覚えよう】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い

今回は、管理人もPHP学習し始めのときは混同していた、PHPの演 ...

【超危険】WordPressデータベースリビジョンお掃除

今回は、WordPressのリビジョンが、データベースに大量にた ...

【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い

今回は、管理人がYouTubeData APIの、order=d ...

YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)

今回は、youtubeとwebサイト連携で、YouTube Da ...

テスト環境(ローカル含む)でPHPサイト開発に使えるツール&xamppでやってみた例(設定や表示ファイルetc)

今回は、管理人がサイトに、ちょっとした機能を実装しようとしていた ...

WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで

今回は、WordPressの公式フォーラムを見ていたら、『一覧か ...

WordPress・REST APIのjsonファイルにカスタムフィールドを入れ、タイトル・アイキャッチと共に外部サイトで取得・表示

今回は、管理人がWPで作ったサイトのコンテンツを、別の自社運営サ ...