web-dev-qa-db-fra.com

Ajax - Appel de la fonction non définie get_option ()

Donc, je travaille dans Wordpress récemment avec Ajax et j'ai réussi à obtenir des données de stock sur mon site à partir de ma base de données. Cependant, j'essaie maintenant d'utiliser Ajax pour charger des publications Wordpress dans la barre latérale gauche, ce qui nécessite l'utilisation de fonctions Wordpress et il semble que je ne le fasse pas correctement.

J'ai parcouru le Codex Wordpress et plusieurs autres discussions/tutoriels sur ce sujet, mais je suis extrêmement confus quant à ce que je fais de travers.

Fichier Javascript

function load_blog_posts_function() 
{
     jQuery.ajax({
     url: "wp-content/themes/Divi/js/stockchart/blog-list-query.php",
     data: ({action : 'load_blog_posts_sidebar'}),
     success: function(data) {
     alert(data);
     }
     });
}

PHP Fichier

<?php 
function load_blog_posts_sidebar()
{
$stockSymbol = $_GET['symbol'];
/* Set up the query arguments. */
$options = get_option("widget_rpwe_widget");
$args = array('fb' => $cat);
$default_args = apply_filters( 'rpwe_default_query_arguments', $args );
$rpwewidget = get_posts($default_args);
//echo $options;
echo("hello world");
}
?>

J'ai aussi lu qu'un peu de code était nécessaire dans mon functions.php, alors j'ai ceci:

$dirName = dirname(__FILE__);
$baseName = basename(realpath($dirName));
require_once ("$dirName/js/stockchart/blog-list-query.php");

add_action("wp_ajax_nopriv_load_blog_posts_sidebar", "load_blog_posts_sidebar");
add_action("wp_ajax_load_blog_posts_sidebar", "load_blog_posts_sidebar");

Je reçois actuellement deux erreurs lorsque j'essaie de l'exécuter, le plus important étant

Appel de la fonction non définie get_option ()

ce qui me dit que mon script php ne reconnaît pas les fonctions Wordpress et que je reçois aussi celui-ci:

Avertissement: session_start (): impossible d'envoyer un limiteur de cache de session - en-têtes déjà envoyés (la sortie a commencé à .../www.3weekwebsites.com/wp-content/themes/Divi/js/stockchart/blog-list-query.php:12 ) dans .../www.3weekwebsites.com/wp-content/themes/Divi/header.php à la ligne 1

Quelqu'un pourrait-il s'il vous plaît partager quelques idées ici? J'apprécierai vraiment cela. :)

1
user3703474

Vous envoyez une demande à un fichier PHP sur lequel la bibliothèque WordPress ne sera pas chargée - d'où l'erreur de fonction non définie.

Vous pourriez charger manuellement dans WordPress quelque chose comme require '../../../wp-load.php'.

Ou, mieux encore, utilisez l’impressionnant AJAX API . Envoyez simplement votre demande à wp-admin/admin-ajax.php, puis enregistrez un rappel dans votre plugin ou thème qui correspond au paramètre action (dans votre cas, load_blog_posts_sidebar):

function wpse_147692_load_blog_posts_sidebar() {
    // Do something!
    exit;
}

add_action( 'wp_ajax_nopriv_load_blog_posts_sidebar', 'wpse_147692_load_blog_posts_sidebar' );
add_action( 'wp_ajax_load_blog_posts_sidebar',        'wpse_147692_load_blog_posts_sidebar' );
1
TheDeadMedic