web-dev-qa-db-ja.com

Ajax - 未定義関数get_option()の呼び出し

だから私は最近AjaxでWordpressで働いていて、私は自分のデータベースから私のサイトにいくらかの株価データを入れることに成功した。しかし、私は今Ajaxを使用してWordpressの投稿を左側のサイドバーにロードしようとしています。これにはWordpressの機能を使用する必要があり、これが正しく行われていないようです。

私はWordpress Codexと他のいくつかのスレッド/チュートリアルをこのトピックについて調べましたが、何が悪いのかについては非常に混乱しています。

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ファイル

<?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");
}
?>

私はまた、自分のfunctions.phpにいくつかのコードが必要であることを読んだので、私はこれを持っています:

$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");

これを実行しようとすると、現在2つのエラーが出ます。

未定義の関数get_option()を呼び出します

これは私のphpスクリプトがWordpressの機能を認識していないことを私に伝えています、そして私もこれを得ます:

Warning:session_start():セッションキャッシュリミッタを送信できません - ヘッダはすでに送信されています(出力は.../www.3weekwebsites.com/wp-content/themes/Divi/js/stockchart/blog-list-query.php:12 1行目.../www.3weekwebsites.com/wp-content/themes/Divi/header.php

誰かがここに何らかの洞察を共有してもらえますか?とても感謝しております。 :)

1
user3703474

PHPライブラリがロードされていないWordPressファイルにリクエストを送信しているため、未定義関数エラーが発生しています。

require '../../../wp-load.php'のようなものを手動でWordPressにロードできました

または、さらに良いことに、素晴らしい AJAX API を使用します。 wp-admin/admin-ajax.phpへのリクエストを実行し、actionパラメーター(この場合、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