Статьи

Сценарий Ultimate Включить / Требовать для WordPress

Как разработчик WordPress, который создает специализированные продукты для своих клиентов, я снова и снова сталкивался с одной и той же проблемой, пытаясь создавать PHP-скрипты в рамках WordPress. Мне нравится использовать встроенную функциональность WordPress, но я продолжал сталкиваться с одними и теми же сообщениями об ошибках снова и снова: «вызов неопределенного метода…» или «не удалось открыть поток».

Затем вы отправляетесь на охоту, чтобы найти подходящие файлы, которые вам нужно включить, требовать, include_once или require_once, в зависимости от ваших потребностей. Как только вы найдете нужный файл, обычно какой-нибудь документ PHP в папке wp-includes, например, вы должны включить / потребовать его в начале вашего скрипта — часто только для того, чтобы найти другой «вызов неопределенного метода…»

Чтобы сэкономить время и позволить вам начать создавать код сейчас , а не после нескольких часов (или дней) поиска решения в Google, я создал простой скрипт, с помощью которого я запускаю все свои пользовательские файлы. Он обрабатывает все нужные мне файлы для 99% моей разработки.

Предостережение

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

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

Забудьте ABSPATH — сделайте свой собственный путь

Мне нравится всегда определять ABSPATH, но его можно использовать с некоторыми скриптами и установками WordPress. Раньше я использовал простой if, чтобы проверить, определен ли ABSPATH, но это тоже не всегда получается:

[sourcecode language = ”php”]

/ * ПРИМЕЧАНИЕ: это то, чем я больше не занимаюсь * /

// Определим абспат

if (!fined (‘ABSPATH’))}}

define (‘ABSPATH’, dirname (___ FILE___). ‘/’);

}

[/исходный код]

Вместо этого я создаю свой собственный путь к моей установке WordPress, который намного более стабилен:

[sourcecode language = ”php”]

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-load.php’);
include ($ location. ‘/wp-includes/pluggable.php’);

[/исходный код]

Это предполагает, что ваша установка WordPress находится в корне вашего сайта, т.е. www.yoursite.com

Если это не так, просто добавьте строку в переменную $ location так:

[sourcecode language = ”php”]

$ location = $ _SERVER [‘DOCUMENT_ROOT’]. ‘/ Ваш-сор-установки’;

[/исходный код]

Большая тройка

По моему опыту, есть три файла, которые вызывают все мои проблемы при настройке моих сценариев. Я называю их моей «большой тройкой», потому что, как только я включаю или требую их, большинство моих проблем исчезают, когда дело доходит до ошибок «вызова неопределенного метода». Они есть:

  1. WP-config.php
  2. pluggable.php
  3. сор-load.php

Как только вы их получите, вы обнаружите, что большинство ваших ошибок исчезают.

[sourcecode language = ”php”]

// Получить большую тройку

include (ABSPATH. ‘wp-config.php’);

include (ABSPATH. ‘wp-load.php’);

include (ABSPATH. ‘wp-includes / pluggable.php’);

[/исходный код]

Глобальный $ wpdb

Еще одна полезная вещь — убедиться, что ваш $ wpdb является глобальной переменной. Это позволяет любым созданным вами функциям иметь доступ к функциям запросов к базе данных WordPress. Это может сэкономить время.

Поскольку вы включили файлы wp-config.php и wp-db.php, у вас не должно возникнуть проблем с тем, чтобы $ wpdb работал правильно, но я все же хотел бы запустить тест if, чтобы проверить сначала:

[sourcecode language = ”php”]

// Получить большую четверку

глобальный $ wpdb;

if (! isset ($ wpdb))

{

include ($ location. ‘/wp-config.php’);

include ($ location. ‘wp-includes / wp-db.php’);

}

[/исходный код]

Проверьте скрипт

Если вы начинаете с новой установки WordPress, у вас есть только один пользователь-администратор. Таким образом, нет смысла пытаться подключиться к базе данных WordPress и опрашивать пользователей. Я построил этот простой тест, чтобы увидеть, правильно ли мы подключаемся. Если это так, вы увидите свое имя и адрес электронной почты, зарегистрированные в WordPress в виде таблицы:

[sourcecode language = ”php”]

/ *
Тест выше включает заявления работают
список всех администраторов и их адрес электронной почты
адреса в таблице.
* /

// Начать тест
$ args = array (// настроить запрос только для администраторов
‘role’ => ‘Administrator’,
‘fields’ => ‘all_with_meta’
);

$ query = get_users ($ args); // используем вызов get_users

// Настраиваем стол
echo ‘<table cellpadding = «0» cellspacing = «0» border = «1»> <tr> <thead> <th> Nice Name </ th> <th> Email </ th> </ thead> </ tr > ‘;
// Для каждого администратора создаем строку таблицы
foreach ($ query как $ query) {
echo ‘<td>’. $ query-> user_nicename. ‘</ td> <td> <a href=»mailto:’. $query-> user_email.’ «> ‘. $ query-> user_email. ‘</a> </ TD> </ TR>’;

} // Конец foreach
echo ‘</ table>’; // закрываем тег таблицы

// Завершение теста — закомментируйте или удалите отсюда вышеупомянутый «Начать тест»

[/исходный код]

Если тест работает, и вы видите свое имя и адрес электронной почты, просто удалите наш комментарий из сценария теста и начните писать код!

Вы можете удалить этот файл PHP в любом месте в папках WordPress, и он будет работать. Таким образом, для начального тестирования и программирования этот скрипт может сэкономить массу времени, в противном случае вы потратите на устранение основных технических проблем.

Опять же, вы можете захотеть сделать некоторые детали работы, как только ваши функции работают должным образом и включают только абсолютно необходимые файлы. Например, если вам не нужно включать файл wp-config.php, не делайте этого! Просто закомментируйте код, построчно, и посмотрите, работает ли он правильно. Оставь то, что тебе нужно, потерять остальное.

Надеюсь, это сэкономит вам кучу времени и позволит вам сосредоточиться на кодировании, а не на базовом отображении необходимых файлов для разработки WordPress.

Вот полный сценарий для удобства. Просто скопируйте, сохраните файл, где это необходимо, и получайте удовольствие от работы:

[sourcecode language = ”php”]

<? PHP
/ * Волшебный инклюдер Джастина

Предполагается, что вы используете корневую папку вашего сервера для
WordPress установить. Если нет, просто добавьте подпапку, где для
WordPress вы используете.

Например, добавьте подпапку в переменную $ location:
$ location = $ _SERVER [‘DOCUMENT_ROOT’]. ‘/ Ваш-подпапка’;
* /

$ location = $ _SERVER [‘DOCUMENT_ROOT’];

include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-load.php’);
include ($ location. ‘/wp-includes/pluggable.php’);

глобальный $ wpdb;

if (! isset ($ wpdb))
{
include ($ location. ‘/wp-config.php’);
include ($ location. ‘/wp-includes/wp-db.php’);
}

/ *
Тест выше включает заявления работают
список всех администраторов и их адрес электронной почты
адреса в таблице.
* /

// Начать тест
$ args = array (// настроить запрос только для администраторов
‘role’ => ‘Administrator’,
‘fields’ => ‘all_with_meta’
);

$ query = get_users ($ args); // используем вызов get_users

// Настраиваем стол
echo ‘<table cellpadding = «0» cellspacing = «0» border = «1»> <tr> <thead> <th> Nice Name </ th> <th> Email </ th> </ thead> </ tr > ‘;
// Для каждого администратора создаем строку таблицы
foreach ($ query как $ query) {
echo ‘<td>’. $ query-> user_nicename. ‘</ td> <td> <a href=»mailto:’. $query-> user_email.’ «> ‘. $ query-> user_email. ‘</a> </ TD> </ TR>’;

} // Конец foreach
echo ‘</ table>’; // закрываем тег таблицы

// Завершение теста — закомментируйте или удалите отсюда вышеупомянутый «Начать тест»

?>

[/исходный код]

Хотите глубже вникнуть в PHP? Посетите наш партнерский сайт, PHPMaster.com .