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

更新: 2023/11/09 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リダイレクトなどがおすすめです。

参考リンク

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

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


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

関連記事

【WordPressで覚える】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い
【PHPプログラミング】glob関数を使って、特定ディレクトリ内のファイル一覧取得や、出力を行う方法
【WordPress別サーバー引っ越し】SQLエクスポート/インポート&Redirectionプラグインを使った方法
【php/pdoクラス】SQLite/phpLiteAdminでデータベース作成&アクセス制限・PDOクラスで記事データ取得してみる
【PHPプログラミング】PDOクラスを使って、WPのget_post_metaで取れないプラグイン独自テーブルを取得する
YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)
【WPユーザー名バレ対策】ユーザー名表示からPHP・preg_matchでリダイレクト(wp-json/wp/v2/usersなど)
【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い
WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで
【webサイトセキュリティ対策】検索フォームへのSQL判定などがある不正な入力を、WAFで遮断する
【WPカスタマイズ】プラグイン不使用、テーマに関連記事表示機能を実装しPV・滞在時間を上げる
【ユーザーデータ取得】WordPress定義済み関数の『get_userdata()』『wp_get_current_user()』ってどのように違うの?