Intereting Posts
Почему WP игнорирует мои разрывы строк? Невозможно добавить текст перед коротким кодом Ссылки wp_mail мертвы woocommerce 3.2.1 не отправляет электронные письма с уведомлением о заказе пользовательский пост для слайдера Удалить верхнюю панель администратора Проверьте, находится ли конкретный пользователь в сети вне wp сохранение / чтение значения настраиваемого поля не работает – значение не получает POSTED MaxCDN не кэширует мои изображения WooCommerce breadcrumb отображает пользовательские сообщения вместо данных продукта Повторение категорий только в том случае, если они являются дочерними элементами данной категории Неверный порядок вывода при смешивании WP_CLI :: API и php-cli-tools Добавление содержимого внутри тегов привязки в главном навигаторе WordPress возможно объединить сайты с большим количеством контента, в многопользовательские? Какой крючок для обработки данных формы плагина?

Как избежать wp-load.php в файле PHP / CSS?

Это сложно, поскольку люди обычно смешивают wp-нагрузку с AJAX, и я не могу найти правильный ответ.

Дело 1

У меня есть динамический файл style.php, который выглядит так:

<?php header("Content-type: text/css"); require_once('../../../../wp-load.php'); ?> body { background: <?php echo get_option('background_color'); ?>; } 

Случай 2

Я использую вызов AJAX:

  jQuery.post('<?php bloginfo('template_directory'); ?>/framework/foo.php',{ foo: smth, bar: else }); 

Затем я запускаю некоторые функции WordPress внутри foo.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-нагрузок в обоих случаях?

Большое спасибо 🙂

Вот базовая настройка, которую я использую для AJAX с WordPress. вместо загрузки wp-load.php; просто используйте метод WordPress по умолчанию для вызовов AJAX. Это позволяет также фильтровать вызовы функций из Javascript через коммутатор. Я также добавил быстрый пример для wp_localize_script.

 <?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>