#php #wordpress #variables #constants
#php #wordpress #переменные #константы
Вопрос:
Я пытаюсь создать плагин для сайта в WordPress как для практики, так и для выполнения. В этом плагине будут различные файлы. Я хочу определить каталог плагинов как константу, поэтому я использую:
define('CUSTOM_EDITING__URL', plugin_dir_url(__FILE__));
Когда я включаю:
//FOLDERS
define('WIDGETS', CUSTOM_EDITING__URL . 'widgets/');
require_once(WIDGETS . 'widgets.php');
Я могу получить доступ к файлу widgets.php
, но когда я вызываю внутри файла:
echo CUSTOM_EDITING__URL;
Я получаю ПОЛЬЗОВАТЕЛЬСКИЙ_EDITING__URL. Я хочу http://www.example.com/widgets/widget.php
Может кто-нибудь объяснить, чего мне не хватает?
РЕДАКТИРОВАТЬ: дополнительная информация о рассматриваемой проблеме.
Прямо сейчас я понял, что widgets.php не принимает определенные переменные. Например… вызывающий файл способен создавать виджет, используя формат:
class Foo_Widget extends WP_Widget {
// Content
}
Но widgets.php файл не может разрешить поиск WP_Widget.
Ответ №1:
Итак, это мой ответ. У меня нет никакой реальной хорошей документации, объясняющей это. Я скопировал некоторые элементы из плагина Akismet, чтобы успешно заставить его работать так, как мне было нужно.
define( 'CUSTOM_EDITING__URL', plugin_dir_url( __FILE__ ) );
define( 'CUSTOM_EDITING__DIR', plugin_dir_path( __FILE__ ) );
require_once( CUSTOM_EDITING__DIR . 'class.custom-editing-widget.php' );
require_once( CUSTOM_EDITING__DIR . 'class.custom-editing.php');
register_activation_hook( __FILE__, array( 'CustomEditing', 'plugin_activation' ) );
register_deactivation_hook( __FILE__, array( 'CustomEditing', 'plugin_deactivation' ) );
add_action( 'init', array( 'CustomEditing', 'init' ) );
В файле class.custom-editing.php
я создаю класс с этими базовыми параметрами:
class CustomEditing {
private static $initiated = false;
public function __construct(){
}
public static function init() {
if ( ! self::$initiated ) {
self::init_hooks();
}
}
private static function init_hooks() {
self::$initiated = true;
}
}
Это решает все мои базовые ошибки, которые, как я полагаю, создаются крючками активации. Если кто-нибудь может объяснить детали этого в лучших выражениях, это было бы оценено, но я не совсем понимаю, почему это сработало, а что у меня не получилось.
Ответ №2:
Метод constant может помочь:
echo constant("CUSTOM_EDITING__URL");
Комментарии:
1.
Warning: constant() [function.constant]: Couldn't find constant CUSTOM_EDITING__URL
это означает, что он не определяется в файле. Это своего рода то, что я вижу… Я не уверен, почему в файле ничего не определено, поскольку вызывающий его файл включает в себя все необходимые вызовы файлов.2. Это объясняет, почему
echo CUSTOM_EDITING__URL;
повторяет строку литерала. Этот код внутри widgets.php ? Возможно, вам потребуется добавитьrequire
оператор в widgets.php для файла , который был объявленCUSTOM_EDITING__URL
.3. я не знаю, как правильно объяснить, но это не сработало. Выдает ошибки для используемых функций WordPress, потому что он в основном не связан с файлами WordPress.. это мое лучшее предположение… Он должен иметь возможность перейти к БАЗОВОМУ ФАЙЛУ> ВЛОЖЕННОЙ ПАПКЕ> ФАЙЛУ> функциям , но сейчас он просто переходит в БАЗОВЫЙ ФАЙЛ и не будет углубляться