質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2324閲覧

(WordPress)PHPでアラートを表示させようとするとメッセージ内容が表示されない。

Bonkk

総合スコア10

WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/01/08 07:34

■ 困っていること
運営しているWordpressのサイトにて、特定のイベントでアラートを表示させたいと思っています。
試しにボタンを押すとテスト用のアラートが表示されるショートコードを作成したのですが、なにをどうしてもメッセージ内容だけが表示されません・・・。

■ 試していること
function.phpに「外部PHPファイルをショートコード化して呼び出すコード」を追加しており、今回のアラートのコードも別のPHPファイルとして保管してあります。以下、呼び出しに使っているコードです:

PHP

1//外部PHP呼び出しショートコード 2function fetch_my_php($arg = array()) { 3 extract(shortcode_atts(array( 4 'file' => 'default' 5 ), $arg)); 6 ob_start(); 7 include("fetch-shortcodes/$file.php"); 8 return ob_get_clean(); 9 10} 11add_shortcode('fetch', 'fetch_my_php');

アラートを表示させるためのPHPは以下の通りです:

PHP

1<?php 2 3function alert(){ 4$alert = "<script type='text/javascript'> alert('テスト'); </script>"; 5echo $alert; 6} 7?> 8 9<html> 10<button onclick="alert()">アラートを表示(テスト)</button> 11</html>

ボタン自体はちゃんとサイト上に表示されていて、クリックするとアラートのポップアップも出てきます。しかし、メッセージ内容(alert('テスト')の「テスト」の部分)だけがどうしても表示されません。変数に置き換えてみたり、シングルクォート('')のチェックもしたのですが、なにをしてもダイアログが空っぽのままです・・・。

もしどなたか解決法をご存知でしたら、ぜひお知恵をお貸しください m(_ _)m

■ 補足情報
動作環境:Mac
Wordpressのテーマ: Luxeritas
サーバ: Mixhost
ブラウザ:Chrome

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんばんわ。

少し質問者さんに誤解があるようです。
javascriptのalert関数を呼び出しても、
php側のalert関数が呼び出されるようなことはありません。
両者には何ら関連性はありません。

提示のコードではJavascriptでalert関数を呼び出してますよね。
これ、引数に何も与えていないから何も表示されないのだと考えられます。

javascript

1<!-- alert関数の引数が空っぽ --> 2<button onclick="alert()">アラートを表示(テスト)</button>

以下のコードを実行すると、
"aiueo"というメッセージが表示されたメッセージボックスがPOPします。

PHP

1 2<?php 3 4// 5// このalert関数がjavascriptによって呼び出されるようなことはない 6// 7function alert(){ 8$alert = "<script type='text/javascript'> alert('テスト'); </script>"; 9echo $alert; 10} 11?> 12 13<html> 14<button onclick="alert('aiueo')">アラートを表示(テスト)</button> 15</html>

参考にして頂けたら幸いです。

以下追記

質問者さんの望んでいるコードって、こういうことかな・・・?

PHP

1<html> 2<head> 3<title>TEST</title> 4</head> 5<body> 6 7<?php 8 9function alert(){ 10 $alert = "<script type='text/javascript'> alert('テストコード'); </script>"; 11 echo $alert; 12} 13 14alert(); // alert関数を呼んでやる 15 16?> 17</body> 18</html>

このPHPを実行すると、"テストコード"と書かれたメッセージボックスが表示されます。
勘違いだったらごめんなさい。

投稿2022/01/08 09:04

編集2022/01/08 10:24
srsnsts

総合スコア480

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

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

Bonkk

2022/01/08 09:55

ご返信ありがとうございます! ご提示していただいたコードを貼り付けて実行してみたところ、見事に "aiueo" と表示されました! 参考にしていた他サイトには、PHPでアラートを表示するにはJavaScriptのalert関数を利用する必要があるとありました・・・。おかしいなと思い、試しにPHPで設定したfunction(alert( ))をまるまる消してボタンのHTMLだけを残したところ、それでも正常に作動しました。もしかして、PHPにもすでに alert関数があるんですかね・・・?
srsnsts

2022/01/08 10:03

コメントありがとうございます。 > 参考にしていた他サイトには、PHPでアラートを表示するには > JavaScriptのalert関数を利用する必要があるとありました・・・。 参考にしたサイトは下記のサイトですか? https://www.sejuku.net/blog/80747 >おかしいなと思い、試しにPHPで設定したfunction(alert( ))をまるまる消してボタンのHTMLだけを残したところ、 >それでも正常に作動しました。もしかして、PHPにもすでに alert関数があるんですかね・・・? PHPにはalert関数は(私の知る限りでは)実装されていません。
srsnsts

2022/01/08 10:35

もしかしたら質問者さんの意図ははこういうことかな、と予想して 回答に追記しました。ご覧ください。
Bonkk

2022/01/08 10:47

やっぱりPHPにalert関数ってないですよね・・・。 functionを設定せずに、サイトのページに以下のHTMLを貼り付けたところこれだけでも作動しました・・・: <html> <button onclick="alert('テスト')">アラートを表示(テスト)</button> </html> これっておかしいですかね・・・? ____________________________ ご回答の編集、拝見しました!とても参考になりました、ありがとうございます。 アラートを表示すること自体が初めてのことなので、動作を確認してみようと試しに任意でアラートを表示できるボタンを作ろうと思った次第です。ゆくゆくは、特定のイベント(外部リンクへの移動)をトリガーにしてアラートを表示させたいと思っています。
srsnsts

2022/01/08 10:49

コメントありがとうございます。 いや、全くおかしくないですよ。javascriptの正常な操作ですよ。 もしかして https://teratail.com/questions/377170 の件で困ってますか?
Bonkk

2022/01/08 11:46

ご返信ありがとうございます。 はい!その質問を私が投稿したものです。 最終的にはもう片方の質問のようなアラートを表示させたいとおもっています。 まずは、スタンダードなアラートの表示の仕方を知っておこうと色々試しいたのですがうまくいかなかったのでこちらの質問を投稿しました。
srsnsts

2022/01/08 11:54

コメントありがとうございます。 なるほど。そういう事情ですか。 最終目標に向かって一歩一歩進んでいく感じですね。
guest

0

include("fetch-shortcodes/$file.php");

include は、ファイルが見つからない場合や読み込みに失敗した場合でもエラーを出しませんので、処理がそのまま最後まで実行されている場合があります。
ファイルが読み込まれなかった場合、ファイル中身がないことになるので「メッセージ内容だけが表示されません」という現象が出ると思います。

WordPress を稼働させているサーバーのログ( PHP のログ ) を確認すると Warning: include("fetch-shortcodes/$file.php"): failed to open stream: No such file or directory in

のような Warning が出ていたりしないでしょうか。

たとえば、require の場合、ファイルの読み込みを失敗するとエラーになりますので、試しに require に変更するとどうなりますか?

ファイルがどこにあるかわかりませんが、ファイルのパス指定で、絶対パスで記載してみるとどうなるでしょうか。

投稿2022/01/08 08:38

編集2022/01/08 08:40
CHERRY

総合スコア25171

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

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

Bonkk

2022/01/08 09:48

ご返信ありがとうございます! 貴重な情報ありがとうございます・・・! 試しに include を require に変えてみたところ、特別変化はありませんでした・・・。 ログにもエラーはでていなかったため、呼び出し用のコード自体は正常に作動していると考えられます。 他の方の回答も参考にし、もう少し解決策を模索してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問