🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1126閲覧

Wordpressで「home_url()」をドメインに、「get_the_ID()」をパスとして、Cookie保存してから処理を分岐させたい。

Hiyoko_mochi

総合スコア30

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/02/24 07:20

編集2021/02/24 07:58

やりたい事

PHPを用いたCookieの勉強の一環として、
Wordpressで作成したサイト内で、現在開いているページのみsetcookieを設定して、処理を分岐したいと思っています。

試した事

<!-- setcookie設定 --> <?php setcookie('jump', 'jumpname', time()+60*60*24*7, '/hogehoge', 'xxxxx.com'); ?> <?php if(isset($_COOKIE['jump'])) { $jump = get_template_part('cookie_on'); } else { $jump = get_template_part('cookie_off'); } ?> <!-- 表記の設定 --> <?php echo $jump; ?>

まず、このようにsetcookieを行い
Cookieがある場合はcookie_on.phpを表示、ない場合はcookie_off.phpを表示するようにしていましたが、
hogehogeの部分を投稿IDに変更しようと

<!-- setcookie設定 --> <?php $my-path = '/' + get_the_ID(); $my-domain = home_url(); ?> <?php setcookie('jump', 'jumpname', time()+60*60*24*7, $my-path, $my-domain); ?> <?php if(isset($_COOKIE['jump'])) { $jump = get_template_part('cookie_on'); } else { $jump = get_template_part('cookie_off'); } ?> <!-- 表記の設定 --> <?php echo $jump; ?>

このような感じで行ってみましたが、分岐せず、<?php echo $jump; ?>の上にIDやURLが表示されてしまいます。

理想は、「home_url()」で呼び出したURLをドメインに、「get_the_ID()」で呼び出したIDをパスで設定して、Cookie保存を行い、そこから有り無しで表示を分岐できればと思っていますが、やり方を調べてもわからずでお知恵を貸して頂ければありがたいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/24 08:55

変数とか連結を意識したような文字が原因でエラーにならんのかね?
Hiyoko_mochi

2021/02/24 09:21

最初はget_the_ID()などを入れていたのですが、エラーでページ自体の表示ができなかったので、上記のような書き方をしてみたのですが、お恥ずかしながら、先がわからずじまいです・・・。
退会済みユーザー

退会済みユーザー

2021/02/24 10:40

>このような感じで行ってみましたが、 の上のコードは実際にエラーも無く動作するかい? >IDやURLが表示されてしまいます。 と書いてるので動いてるのかもしれないが動いたらおかしい。
Hiyoko_mochi

2021/02/24 11:46

とりあえず、Cookieがある場合はcookie_on.phpを表示、ない場合はcookie_off.phpを表示するようにしていますが、cookie_on.phpの内容が表示されている状態です。 Wordpressをサブディレクトリに入れており、Chromeから確認する限り、ドメイン(xxxxx.com/wp/)でCookie保存されている訳ではないので、動いているとは言えない状態な気がします。
退会済みユーザー

退会済みユーザー

2021/02/24 13:13

動くという表現はそれ以前の事でsyntax errorになるはず
Hiyoko_mochi

2021/02/24 13:55

本来なら、Parse error: syntax errorなり出るはずなのですが、普通にサイトも該当のページも表示されるので、余計に謎なのですが、get_the_ID()をそのまま入れた時は表示されなかったので、このような感じで行ってみましたが~の表記までは行った感じです。 只、これだと正しい記述ではない為、希望の形にはならないので、どうすれば良いか頭を抱えてる状態です・・・。
tabuu

2021/02/25 02:58

PHPの変数名にハイフン使えないってことを暗に言われているのでは? 何でエラーにならないのかは分かりませんが。
Hiyoko_mochi

2021/02/25 07:25

本来なら、真っ白になるなり、「このサイトで重大なエラーが発生しました。」といった画面になるはずなのですが、なぜ表示されるのか謎です・・。 とりあえず別の方法を探してみます。
KazuhiroHatano

2021/03/01 02:14

「phpの文字連結は + じゃなくて . 」 「変数名に-は使えない」 まずここ直しましょう
guest

回答1

0

自己解決

ご指摘を頂いた内容を元に

$slash = '/'; $cafe = 'cafe'; $jumpname = $cafe. $post->ID; $home = home_url(); $directory = $slash. $post->ID; setcookie( 'jump', $jumpname, time() + 60*60*24*7, $directory );

ドメイン直下にWordpressを入れた状態の環境が前提ですが、上記で、思った通りの結果になりました。

ご回答してくださった方々、ありがとうございました!

投稿2021/03/03 03:48

Hiyoko_mochi

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問