Включить wp-blog-header.php из удаленного вызова functions.php?

У меня есть сценарий, который вызывается из моего файла functions.php (через ajax .get), который должен иметь доступ к методу get_option () WP, чтобы получить некоторые значения, которые необходимо обработать.

Однако, несмотря на то, что файл работает отлично на большинстве сайтов, где он находится, на нескольких установках, у меня возникают проблемы с работой скрипта (хром javascript-консоль сообщает 404 (не найден) на color.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-header.php

Есть ли альтернативный способ включения файла заголовка, чтобы иметь возможность вызвать get_option ()?

Solutions Collecting From Web of "Включить wp-blog-header.php из удаленного вызова functions.php?"

Вам не нужно делать прямые звонки в ваши файлы тем – использовать API AJAX и делать все запросы 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' ); 

Посмотрите, как суффикс hook, wp_ajax_nopriv_change_color , соответствует переменной действия в запросе AJAX? См. Этот ответ SE для получения дополнительной информации .

Примечание. Я также префикс других переменных запроса AJAX, так как вы должны использовать собственные переменные $_GET и $_POST же, как и переменные PHP и функции.

Также проверьте код на API AJAX .

Просто измените способ включения include в color.php:

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