我有一个从函数调用的脚本。php文件(通过ajax.get),需要访问WP的get\\u option()方法才能检索需要处理的一些值。
然而,尽管该文件在其所在的大多数网站上都能正常工作,但在少数安装上,我的脚本操作有问题(chrome的javascript控制台报告颜色为404(未找到)。php。
//jQuery calls the file color.php
$(\'#my_theme_switcher\').change
(
function()
{
$.get
(\'<?php echo get_bloginfo(\'template_directory\') ?>/color.php\',
{theme: \'test\', spot: \'1\'},
function(data)
{
doColor(\'#theme_header_color\', data);
}
);
}
);
Here is the file color.php
<?php
require_once(\'../../../wp-blog-header.php\');
echo \'all good\';
?>
在这种情况下,我从未收到回音,因为require语句似乎无法加载wp blog头。php
为了能够调用get\\u option(),是否有包含头文件的替代方法?
最合适的回答,由SO网友:TheDeadMedic 整理而成
您不需要直接调用主题文件-使用AJAX API,并向admin-ajax.php
(这样,WordPress将为您加载,您无需采用文件层次结构来手动加载)。
$.get(
\'<?php echo admin_url( \'admin-ajax.php\' ) ?>\',
{
"color_theme" : "test",
"color_spot" : "1",
"action" : "change_color"
},
function( data ) {
doColor( \'#theme_header_color\', data );
}
);
并且在
functions.php
;
function __do_color_ajax()
{
$theme = $_GET[\'color_theme\'];
$spot = $_GET[\'color_spot\'];
// do something
die( \'AJAX output\' );
}
add_action( \'wp_ajax_nopriv_change_color\', \'__do_color_ajax\' );
看看钩子的后缀,
wp_ajax_nopriv_change_color
, 是否匹配AJAX请求中的操作变量?
See this SE answer for more info.
注意,正如您应该做的那样,我还为其他AJAX请求变量添加了前缀namespace custom $_GET
and $_POST
variables 用同样的方法处理PHP变量和函数。
同时查看codex on the AJAX API.