我创建了一个WordPress插件,其中有2个php文件a.php
和b.php
。 a.php
是主插件文件,其中b.php
将使用AJAX调用。现在在b.php
内,我需要访问WordPress核心功能,例如plugins_url
,sanitize_text_field
等。之前,我使用wp-load.php
包含了require_once
文件,但是被WordPress拒绝。
有没有更好的方法来实现这一目标?
答案 0 :(得分:2)
为了将常规PHP页面转换为使用WordPress的页面,您需要将以下任一代码段添加到每个页面的开头。
<?php
/* Short and sweet */
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>
https://codex.wordpress.org/Integrating_WordPress_with_Your_Website#Grab_the_header
答案 1 :(得分:1)
节省自己的时间,只需用ajax WP方式。
首先,添加您的脚本并将ajax url传递给它(如果您的插件是供个人使用,您可以对其进行硬编码),如下所示:
wp_enqueue_script( 'my_ajax_script', plugins_url( '/myscript.js', __FILE__ ), array('jquery') );
wp_localize_script( 'my_ajax_script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php'));
在js中,您可以通过my_ajax_object.ajax_url
你的ajax电话看起来像是
var request = {action: 'name_of_your_action' /*other params go here*/}
$.ajax({type: "post", dataType: "json", url: my_ajax_object.ajax_url, data: request}).done(function (e)
{
alert('All cool');
})
然后编写函数来处理你的ajax调用
function my_ajax_handler()
{
/*Do some magic*/
echo json_encode(array('some_response_var'=>'some response value'));
die();
}
最后,让wordpress知道您希望通过您的函数处理带有操作name_of_your_action
的调用。你可以这样做
add_action( 'wp_ajax_name_of_your_action', 'my_ajax_handler' ); // for logged in users
add_action( 'wp_ajax_nopriv_name_of_your_action', 'my_ajax_handler'); // for guests
有关详细信息,请参阅Codex。