Используйте ajax для обновления мета-сообщений


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 в нем говорится следующее:

Неустранимая ошибка: Вызов неопределенной функции update_post_meta() в D:\Locali\xampp\htdocs\wp-content\themes\slotlandia\nuovoform\comment.php в строке 8

Вероятно, мне придется "импортировать" глобальные переменные WordPress, но я не знаю, что мне нужно написать.

Есть ли кто-нибудь, кто может мне помочь? Большое спасибо.

Author: Community, 2012-07-27

1 answers

Это не сработает, потому что вы ссылаетесь на один php-файл, а не на всю среду WordPress.

В WordPress есть более простой способ использовать ajax.

Используйте admin_url('admin-ajax') в качестве действия формы, затем поместите функцию, которая ответит на вызов ajax, в тему functions.php .

Более подробно здесь, в этом ответе

 1
Author: ifdion, 2017-04-13 12:37:50