是否包含来自unctions.php远程调用的wp-blog-header.php?

时间:2011-06-01 作者:Scott B

我有一个从函数调用的脚本。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(),是否有包含头文件的替代方法?

2 个回复
最合适的回答,由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.

SO网友:Carlos Paulino

只要改变你在颜色中加入的方式。php收件人:

require($_SERVER[\'DOCUMENT_ROOT\'].\'./wp-blog-header.php\');

结束

相关推荐