Как загрузить WordPress на странице вне WP?

14 окт. 2012 г., 18:47:57
Просмотры: 14.8K
Голосов: 13

Я хочу использовать функцию get_option() WordPress в одном из файлов моей темы, который не связан с WP, он просто расположен в той же директории, что и другие файлы темы. Мне нужен этот файл для дополнительных действий, связанных с IPN PayPal, но мне требуются некоторые значения из таблицы опций WordPress, которые должны вызываться на этой странице для её работы. Я знаю, что не могу просто использовать get_option(), так как этот файл игнорируется WordPress. Есть ли какой-то подход, позволяющий включить некоторые части WordPress в мою тему, чтобы эта функциональность работала только здесь?

2
Комментарии

Я переименовал теги в вашем вопросе. Подсказка: Просто загляните внутрь [tag:wp-load.php].

kaiser kaiser
14 окт. 2012 г. 22:40:47

Вы не думали о том, чтобы получить эти значения из базы данных с помощью пользовательского mysql-запроса? Загрузка всей системы WordPress для пары значений опций может быть излишней. Для удобства поддержки я рекомендую ответ Abdussamad (встроить это в плагин)

Erik Joling Erik Joling
11 дек. 2017 г. 21:13:10
Все ответы на вопрос 4
2
12

Самый короткий способ — загрузить файл wp-load.php и прервать загрузку движка шаблонов (Примечание: это невозможно, если вы загружаете файл заголовка, как это часто встречается в интернете).

# Движок шаблонов не нужен
define( 'WP_USE_THEMES', false );
# Загружаем ядро WordPress
// Предполагаем, что мы в поддиректории: "~/wp-content/plugins/current_dir"
require_once( '../../../wp-load.php' );
15 окт. 2012 г. 04:19:36
Комментарии

Есть ли больше документации по WP_USE_THEMES, чем https://codex.wordpress.org/The_Loop ? :)

jave.web jave.web
25 мая 2016 г. 22:27:20

@jave.web Конечно: Поиск по исходному коду между файлами.

kaiser kaiser
26 мая 2016 г. 00:37:53
2

Самый простой способ — подключить файл wp-load.php. Этот файл загружает все ядро WordPress, поэтому вы можете использовать функции WP, такие как get_option, в своем PHP-файле:

include 'path/to/wp-load.php';

echo get_option( 'option_name' );
14 окт. 2012 г. 19:35:37
Комментарии

+1 Но согласно предыдущему ответу, можно удалить "самый простой" ;)

kaiser kaiser
14 окт. 2012 г. 22:48:23

Одна строка (включая wp-load.php) против нескольких строк (комментарии плагина в начале) — вот что самое простое, лол.

Anh Tran Anh Tran
15 окт. 2012 г. 04:16:09
1

Превратите ваш внешний файл в плагин WordPress. Таким образом, вы получите полный доступ к функциям ядра WP.

14 окт. 2012 г. 19:04:41
Комментарии

Это значительно облегчит вашу жизнь в долгосрочной перспективе.

westondeboer westondeboer
14 окт. 2012 г. 20:31:45
0

Это должно работать на любой установке WordPress:

<?php
function load_wp_load() {
  $wp_did_header = true;
  require_once($_SERVER['DOCUMENT_ROOT'] . '/index.php');
  $matches = preg_grep('/wp-blog-header.php/', get_included_files());
  if (!empty($matches)) {
    $abspath = dirname(reset($matches)) . '/';
    define('ABSPATH', $abspath);
    require_once(ABSPATH . 'wp-load.php');
  }
}
?>
11 дек. 2017 г. 19:23:28