web-dev-qa-db-ja.com

Ajaxを使ってupdate_post_metaを使う

2日前、私は これ と尋ねました、それから私はajaxとphpがどのように働くか理解することができるように私のコードで取り組むことを試みました、おそらく簡単に解決されるでしょう。

これらは私のコードです:

<?php
/*
Template Name: Nuovo form
*/
?>
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 

    <script> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#myForm').ajaxForm(function() { 
                alert("Thank you for your comment!"); 
            }); 
        }); 
    </script> 
<?php wp_head();?>
</head> 
<body>
<form id="myForm" action="<?php echo get_template_directory_uri();?>/nuovoform/comment.php" method="post"> 
    Name: <input type="text" name="name" /> 
    Comment: <textarea name="comment"></textarea> 
    <input type="submit" value="Submit Comment" /> 
</form>
</body>
</html>

それからこれは私のComment.phpです

<?php 
// This is comment.php content
$nuovoform = 0;
$nuovocommento = 1;
if ( isset( $_POST['name'] )){
$nuovoform = $_POST['name'];}
if ( isset( $_POST['comment'] )){
$nuovocommento = $_POST['comment'];}
update_post_meta($post->ID,'varcontrollo',$nuovoform);
$controlliamo = get_post_meta($post->ID, 'varcontrollo', true);
?>

'varcontrollo'はカスタムフィールドテンプレートプラグインを使って作成されたカスタムメタフィールドです。

私がやろうとしているのは、自分のカスタムフィールド内に結果を格納するために作成したフォームを使用することです。私がcomment.phpを閲覧しようとするなら、それはこれを言います:

致命的なエラー:8行目のD:\ Locali\xampp\htdocs\wp-content\themes\slotlandia\nuovoform\comment.phpで未定義の関数update_post_meta()を呼び出します

おそらく私はWordPressの「グローバル」変数を「インポート」しなければならないのですが、何を書けばいいのかわかりません。

私を助けることができる人はいますか?どうもありがとうございました。

2
maisdesign

単一のphpファイルを参照しているのではなく、WordPress環境全体を参照しているため、これは機能しません。

WordPressでajaxを使うもっと簡単な方法があります。

フォームアクションとしてadmin_url('admin-ajax')を使用し、そしてajax呼び出しに答える関数をテーマのfunctions.phpに置きます。

この詳細 の回答はこちら

1
ifdion