因此,我最近一直在Wordpress中使用Ajax,并设法从数据库中获取一些股票数据到我的网站中。然而,我现在正试图使用Ajax将Wordpress帖子加载到我的左侧边栏中,这需要使用Wordpress函数,似乎我做得不太好。
我已经阅读了Wordpress Codex和其他几个关于这个主题的线程/教程,但是我对自己做错了什么感到非常困惑。
Javascript File
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 File <?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");
}
?>
我还了解到我的函数中需要一些代码。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");
我目前在尝试运行此操作时出现两个错误,更重要的是
调用未定义的函数get\\u option()
这告诉我,我的php脚本无法识别Wordpress函数,我还得到以下结果:
警告:session\\u start():无法发送会话缓存限制器-标题已发送(输出开始于…/www.3weekwebsites.com/wp-content/themes/Divi/js/stockchart/blog-list-query.php:12)/www.3weekwebsites。com/wp-content/themes/Divi/header。php在线1
任何人都可以在这里分享一些见解吗?我将非常感激。:)
最合适的回答,由SO网友:TheDeadMedic 整理而成
您正在向一个PHP文件触发一个请求,该文件不会加载WordPress库,因此出现了未定义函数错误。
您可以手动在WordPress中加载require \'../../../wp-load.php\'
.
Or, 更好的是,使用真棒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\' );