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

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

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

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

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1737閲覧

PHPにjQueryの変数を渡す方法について

ringoringogogo

総合スコア15

WordPress

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

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/06/21 11:30

編集2021/06/21 14:00

WordPressのウィジェットを作成しており、ドロップダウンボックスで数字を選択されたらその数だけテキストフィールドを表示させたいと思っています。

以下のようなjQueryを記載しました。

for文で例えば

iが1の時は
get_field_id('imageurl1')

iが2の時は
get_field_id('imageurl2')

としたいのですが、どのように記載すれば良いかわからず、ご教示いただけませんでしょうか。
jQueryの変数をPHPで使えるようにしないといけない?と思い、調べるとAjaxなどが出てきたのですが今回でもそのような必要があるのでしょうか・・・?

<script> jQuery(function() { jQuery('select').change(function() { var settingnumber = jQuery(this).val(); var okikaetext = ""; for (var i=0; i<settingnumber; i++) { okikaetext = okikaetext +   '<p><label for="<?php echo $this->get_field_id('imageurl'); ?>">画像URL:</label><input type="url" name="imageurl" class="widefat" id="<?php echo $this->get_field_id('imageurl'); ?>" name="<?php echo $this->get_field_name('imageurl'); ?>" value="<?php echo esc_attr(@$instance['imageurl']); ?>"></p>' } jQuery('.okikae').html(okikaetext); }); });

大変恐れ入りますが、以上よろしくお願いいたします。

以下、追記いたします。

以下のようにWP_Widgetを継承したクラスのform ファンクションに記載しています。
やりたいこととしては、指定した数だけテキストフィールドを増やしたいと思っています。
(ギャラリーウィジェットのようなものが理想なのですがframeの使い方がわからないのでこの方法で試しています・・・。)

以下、function.phpに記載しているコードです。

<?php class Images_Slider extends WP_Widget { function Images_Slider() { $widget_option = array('description' => '複数の画像とリンクを設定'); parent::__construct(false, $name = '画像スライダー', $widget_option); } function form($instance) { ?> <div class="okikae"> <p>もとの内容です </p> </div> <form method="post" action="confirm"> <div class="form-setting-number" id="form-setting-number"> <p>設定する画像の数</p> <select id="form-setting-number"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> </form> <form method="post" action="confirm"> <div class="form-block" id="form_block[0]"> <!-- Closeボタン --> <span class="close" title="Close" style="display: none;">-</span>
<p>Name:<input type="text" name="name[0]" id="name[0]" /></p> <p> <label for="<?php echo $this->get_field_id('imageurl'); ?>">画像URL:</label> <input type="url" name="imageurl" class="widefat" id="<?php echo $this->get_field_id('imageurl'); ?>" name="<?php echo $this->get_field_name('imageurl'); ?>" value="<?php echo esc_attr(@$instance['imageurl']); ?>"> </p> <p><label for="<?php echo $this->get_field_id('targeturl'); ?>">リンク先:</label> <input type="url" name="targeturl" class="widefat" id="<?php echo $this->get_field_id('targeturl'); ?>" name="<?php echo $this->get_field_name('targeturl'); ?>" value="<?php echo esc_attr(@$instance['targeturl']); ?>"> </p> </div> </form>
<script> //セレクトボックスが切り替わったら発動 jQuery(function() { jQuery('select').change(function() { console.log("値変更されました"); //選択したvalue値を変数に格納 var settingnumber = jQuery(this).val(); var okikaetext = ""; for (var i=0; i<settingnumber; i++) { var idname="imageurl"+(i+1); console.log("id name:"+idname); okikaetext = okikaetext +   ' <p><label for="<?php echo $this->get_field_id(idname); ?>">画像URL:</label><input type="url" name="imageurl" class="widefat" id="<?php echo $this->get_field_id('imageurl'); ?>" name="<?php echo $this->get_field_name('imageurl'); ?>" value="<?php echo esc_attr(@$instance['imageurl']); ?>"></p>' } jQuery('.okikae').html(okikaetext); }); }); </script>

大変恐れ入りますが、お気づきの点ございましたらなんでもご指摘いただけると幸いです・・・。

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

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

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

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

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

m.ts10806

2021/06/21 11:40

これはPHPファイルに直接書いているのでしょうか。 PHPを介して情報を取得するのであれば、現在のコードでは出来ないかと思います。
ringoringogogo

2021/06/21 12:10

phpファイルに直接書いています。 なるほど、、そうなのですね。承知いたしました。お忙しいところご回答いただきましてありがとうございます!
m.ts10806

2021/06/21 12:14

回答ではなく質問への追記修正依頼です。 質問者の現状が質問内容から読み取れない部分があったので聞いています。 環境情報含めて質問本文に追記いただけますか?
ringoringogogo

2021/06/21 23:57

大変失礼いたしました。本文に追記いたしました。
guest

回答1

0

ベストアンサー

selectを変更したときにphpを呼び出すイメージですか?
端的に言ってそれはできません。
写真を取ってからポーズ変えてといっているようなものです。

もしやるとしても別途apiを用意して、$.ajaxなどでバックグラウンドに
データを取りに行くことになります

投稿2021/06/21 11:43

yambejp

総合スコア114843

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

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

ringoringogogo

2021/06/21 12:10

そうなのですね・・・承知いたしました。お忙しいところご教示いただきまして誠にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問