如何避免在PHP/css文件中使用wp-load.php?

时间:2014-04-08 作者:Wordpressor

这很棘手,因为人们通常将wp-load与AJAX混合在一起,我真的找不到合适的答案。

Case 1

我有一种动感的风格。如下所示的php文件:

<?php header("Content-type: text/css");
require_once(\'../../../../wp-load.php\'); ?>

body {
   background: <?php echo get_option(\'background_color\'); ?>;
}

Case 2

我正在使用AJAX调用:

  jQuery.post(\'<?php bloginfo(\'template_directory\');  ?>/framework/foo.php\',{ foo: smth, bar: else });
然后我在foo中运行一些WordPress函数。php(与其他示例中的JS不同):

$foo = $_POST[\'foo\'];
$bar = $_POST[\'bar\'];

$theme_options = get_option(\'theme_options\');
$theme_options[$smth] =  $foo; 
update_option(\'theme_options\', $theme_options);
在这两种情况下,如何避免wp负载?

非常感谢:)

1 个回复
最合适的回答,由SO网友:Douglas.Sesar 整理而成

下面是我在Wordpress中用于AJAX的基本设置。而不是加载wp负载。php;只需对AJAX调用使用Wordpress默认方法。这还允许您通过开关过滤Javascript中的函数调用。我还为wp\\u localize\\u脚本添加了一个快速示例。

<?php

add_action(\'wp_enqueue_scripts\', \'YOUR_NAME_scripts\'); //back end

function YOUR_NAME_scripts( $hook_suffix ) {

            wp_enqueue_script(\'YOUR_NAME-js\');

            global $blog_id;
            $params = array(
                \'site_url\' => site_url(),
                \'admin_ajax_url\' => site_url() . \'/wp-admin/admin-ajax.php\'
            );

            wp_localize_script( \'jquery\', \'YOUR_NAME\', $params );

}

add_action(\'wp_ajax_nopriv_YOUR_NAME_ajax\', \'YOUR_NAME_ajax_function\');
add_action(\'wp_ajax_YOUR_NAME_ajax\', \'YOUR_NAME_ajax_function\');
function YOUR_NAME_ajax_function(){

    fobu_load_classes();

    switch($_REQUEST[\'fn\']):
        case \'test_ajax\':
            $output = $_REQUEST[\'data\'];
        break;


        default:
            $output = \'No function specified, check your jQuery.ajax() call\';
        break;
    endswitch;

    ob_clean();
    $output=json_encode($output);
    if(  is_array( $output )  ):

        print_r( $output );
    else:

        echo $output;
    endif;
    die();

}





?>

<script>
//in YOUR_NAME.js or whatever
jQuery(document).ready(function() { 
    (function ($) { 

                jQuery.ajax({
                    url: YOUR_NAME.admin_ajax_url,
                    dataType: \'json\',
                    //type:\'POST\',
                    data: {
                       \'action\':\'YOUR_NAME_ajax\',
                       \'fn\': \'test_ajax\',
                       \'data\': data
                       },
                    success: function(results){
                        //console.log(results);
                        if( results ){

                        }

                    },// end of success
                    error: function(errorThrown){console.log(errorThrown);}
                });// end of ajax   

    })(jQuery);
});

</script>

结束

相关推荐

在WordPress之外使用wp-load.php时出现问题

我正在尝试使用wp load。php在wordpress之外的页面中,这样我就可以访问wordpress中的所有函数。通常我只包含如下文件require( $_SERVER[\'DOCUMENT_ROOT\'].\'/blog/wp-load.php\' ); 但它似乎不起作用。关于可能发生的事情有什么建议吗?谢谢,保罗