Плагин определения переменной WordPress

#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.. это мое лучшее предположение… Он должен иметь возможность перейти к БАЗОВОМУ ФАЙЛУ> ВЛОЖЕННОЙ ПАПКЕ> ФАЙЛУ> функциям , но сейчас он просто переходит в БАЗОВЫЙ ФАЙЛ и не будет углубляться