Intereting Posts
Загрузка изображений в пользовательскую форму сообщения Удалить имя пользователя в электронной почте или изменить имя пользователя для электронной почты Как загрузить SVG-изображения с помощью медиа-загрузчика? Плагин JQuery не работает на отдельных страницах Интеллектуальный плагин навигации и пользовательские таксономии Ошибка Cookie сайта, перенаправление и пустые страницы после обновления Установленный вручную плагин не отображается почему имя привязки добавляет косую черту в url? Я получаю 0 после результата моих запросов ajax Почему, если я устанавливаю скрипт tinymce, я получаю неопределенную ошибку Как удалить фид RSS, добавленный плагином WordPress в `wp_head ()`? Как добавить кнопку «Читать дальше» в мой блог? Есть ли какие-либо действия, такие как «init_frontend» Поля первого и последнего имени не заполняются при использовании wp_insert_user WordPress WC Vendor: уведомление о подтверждении бронирования при изменении статуса бронирования с платного на подтвержденное

update_option не работает в автономном скрипте PHP

У меня есть отдельный PHP-скрипт в моей директории темы WordPress, который я запускаю каждый час через задание cron (или вручную, если необходимо). Все остальные функции WordPress работают, кроме функции update_option() .

Упрощенная версия моего скрипта выглядит так:

 require_once('/path/to/site/wp-load.php'); $value = my_function(); update_option('my_option', $value); 

и в одном из файлов моей темы я запускаю следующий код:

 echo get_option('my_option'); 

Ничего не печатается, и var_dump показывает, что возвращаемое значение false .

На моей странице wp-admin/options.php тоже не my_option .

Я в недоумении, потому что ниже этих строк я использую следующие функции WordPress для успешного взаимодействия с моей базой WordPress:

  • get_posts
  • delete_post_meta
  • add_post_meta

Отлаживая мой скрипт, my_function возвращает строку (около 10 символов), и никакие ошибки не E_ALL настройками ошибок PHP на E_ALL .

Нужно ли включать другие основные файлы WordPress? Я думал, что wp-load.php вам нужен.


Версия WordPress: 3,7

Я не уверен, почему это не работает для вас, но в файле wp-content/test.php :

 <?php // doesn't make difference to have this or not, for the rest to work define( 'WP_USE_THEMES', false ); require( $_SERVER['DOCUMENT_ROOT'] .'/wp-load.php' ); function my_function() { return 'hello world'; } $value = my_function(); update_option( 'my_option', $value ); var_dump( get_option( 'my_option' ) ); 

Добавьте две строки в свой файл вверх

  $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] ); require_once( $parse_uri[0] . 'wp-load.php' ); 

Он загружает весь WordPress, но не вызывает wp () или вызывает загрузчик шаблонов (используемый темами).

Похоже, вам нужен какой-то бутстрап для вашего кода. У WordPress уже есть bootstrap, такой как index.php или wp-load.php или даже wp-blog-header.php .

Эта :

 require_once('/path/to/site/wp-load.php'); 

не рекомендуется, так как путь может быть изменен. Что вы можете сделать, чтобы иметь некоторый бутстрап:

 // Load WP $load = 'wp-load.php'; while( !is_file( $load ) ) { if( is_dir( '..' ) ) chdir( '..' ); else die( 'Could not find WordPress in this place!'); } require_once( $load ); 

Таким образом, вы сможете загрузить WordPress практически в любом случае.