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

      2021/02/04   2054文字

今回は、前回の『別ディレクトリに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で使われるデータは、MySQLデータベースに、どのように格納されているの?
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?
【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?
【ユーザーデータ取得】WordPress定義済み関数の『get_userdata()』『wp_get_current_user()』ってどのように違うの?
WordPressユーザーが覚えると便利な条件分岐~投稿記事・固定ページ指定して表示/非表示
【別に止めなくてOK】WordPressサイトなどに、アメブロ・fc2など無料ブログの更新情報を表示して連携する方法
WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム
YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)
【WordPress更新情報表示】php/wp組み込みファンクション(fetch_feed)で取得と、プラグインで表示どちらが良い?
【超危険】WordPressデータベースリビジョンお掃除
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&xamppでやってみた例(設定や表示ファイルetc)