[WordPress] フォームに Functions.php から関数を実行します。

スポンサーリンク

質問

user_meta データの特定の部分を表示するフォームを構築しています、このフォームの送信にユーザーメタを更新できるようにします

これは私が瞬間;

function my_form_funnction() {
global $current_user;

$vat_no = get_user_meta( get_current_user_id(), 'vat_number', true );

?>
<form name="setPrices" action="" method="POST">

<label for="lowPrice">Vat Number: </label>
<input type="text" id="vat_number" name="vat_number" value="<?php echo $vat_no ?>" />


 <button type="submit">Save</button>
 </form>

 <?php update_user_meta( get_current_user_id(), 'vat_number',      esc_attr($_POST['vat_number']) );
} 

ことはメタはページが読み込まれるときのみたいのでそれをユーザーの pressess を保存するときに行うユーザー更新 php


答え

あなたの問題はあなただと思う

入れてフォームと update_user_meta メソッドとすべて関数 my_form_funnction()。あなたは、関数の中かっこ {} にすべてを囲みます。あなたのページが読み込まれるときに機能どこかは、なぜあなたのページに、関数内のすべての呼び出しを取得ページ読み込み上で実行されます

このことを考慮できる:

1) 関数 my_form_funnction() のうち、フォーム セクションを取るし、関数の外に置きます。

2)、my_form_funnction() から update_user_meta メソッドを取り出し、あなたの関数をどこか外に置きます。それはどこか適切な判断を呼び出す必要がありますので正確、update_user_meta メソッドは何を知っていない

3) で、

<form name="setPrices" action="" method="POST">

、アクションを行う =”? アクション = functionSubmit”.

4) は、フォームが送信されたときに、my_form_funnction() を呼び出すためのコードのブロックを追加します。

参照としてあなたのページ全体を持っていないのでにあなたのページに以下のサンプル コードは動作かどうかと確信するのではないが、このような何かを試みるし、ページに応じて調整 php タグと終了タグの注意できます:

<?php
function my_form_funnction() {
global $current_user;

$vat_no = get_user_meta( get_current_user_id(), 'vat_number', true );
}
?>    

<form name="setPrices" action="?action=functionSubmit" method="POST">

<label for="lowPrice">Vat Number: </label>
<input type="text" id="vat_number" name="vat_number" value="<?php echo $vat_no ?>" />

<button type="submit">Save</button>
</form>

<?php
if(isset($_GET['action'])=='functionSubmit') {
my_form_funnction();
}
?>

このどこかそれを呼び出したいを置く。あなたすることができますバックに入れて、my_form_funnction() 全体のコードを持っていないので。

<?php update_user_meta( get_current_user_id(), 'vat_number', esc_attr($_POST['vat_number']) );?>

答え

Ajax を使用して、それをリフレッシュせずページの情報を更新する必要があります。JQuery をお試しください !それは Ajax を使用する本当に簡単な方法です。たとえば:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<button onclick="javascript:la()">Save or do smth</button>
<div id="a">Here will be included the loadable thing</div>
<script>
function la(){
$("#a").load("/functions.php?func=my_form_function");
}
</script>

と functions.php 設定可能性があります:

if(isset($_GET["func"]){
if($_GET["func"] == "my_form_function"){
my_form_funnction();
}

}

http://stackoverflow.com/questions/28440832/execute-a-function-from-functions-php-in-form

スポンサーリンク

Leave a Reply