web-dev-qa-db-fra.com

Utilisez ajax pour update_post_meta

Il y a 2 jours, j'ai demandé ceci puis j'ai essayé de travailler sur mon code pour pouvoir comprendre comment fonctionnent ajax et php et maintenant j'ai un nouveau numéro qui , serait probablement facilement résolu.

Ce sont mes codes:

<?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>

Alors c'est mon 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' est un méta-champ personnalisé créé à l'aide du plug-in Modèle de champ personnalisé.

Ce que j'essaie de faire est d'utiliser le formulaire que j'ai créé pour stocker le résultat dans mon champ personnalisé. Si j'essaie de naviguer sur comment.php, il dit ceci:

Erreur fatale: appel de la fonction non définie update_post_meta () dans D:\Locali\xampp\htdocs\wp-content\themes\slotlandia\nuovoform\comment.php à la ligne 8

Je dois probablement "importer" des variables "globales" WordPress mais je ne sais pas ce que j'ai à écrire.

Est-ce qu'il y a quelqu'un qui peut m'aider? Merci beaucoup.

2
maisdesign

Cela ne fonctionnera pas car vous faites référence à un seul fichier php, mais à l’ensemble de l’environnement WordPress.

Il existe un moyen plus simple d’utiliser ajax dans WordPress.

Utilisez admin_url('admin-ajax') comme action de formulaire, puis placez la fonction qui répondra à l'appel ajax dans le fichier functions.php du thème.

Plus de détails ici dans cette réponse

1
ifdion