在我的插件的自定义脚本中获得对wordpress核心功能的访问权限

时间:2015-09-08 06:16:35

标签: php ajax wordpress apache wordpress-plugin

我创建了一个WordPress插件,其中有2个php文件a.phpb.phpa.php是主插件文件,其中b.php将使用AJAX调用。现在在b.php内,我需要访问WordPress核心功能,例如plugins_urlsanitize_text_field等。之前,我使用wp-load.php包含了require_once文件,但是被WordPress拒绝。

有没有更好的方法来实现这一目标?

2 个答案:

答案 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