Использование require_once в плагине WordPress?

30 нояб. 2011 г., 04:07:12
Просмотры: 19.2K
Голосов: 5

В чём разница между этими двумя фрагментами кода, и какой из них следует использовать в плагине WordPress?

require_once(dirname(__FILE__).'/inc/canagan_admin_functions.php');  // Использует абсолютный путь от текущего файла
require_once( '/inc/canagan_admin_functions.php' );  // Использует относительный путь от корня сервера
1
Комментарии

Первый, потому что второй не сработает.

Otto Otto
30 нояб. 2011 г. 04:12:33
Все ответы на вопрос 1
0
11

Первый вариант означает...

Включить файл, найденный в директории inc, которая находится на уровень выше директории, где расположен этот файл.

Второй вариант означает...

в корне сервера (/) найти папку inc, а в ней — файл canagan_admin_functions.php, и подключить его.

Первый вариант сработает, а второй — нет. Во втором случае вы ищете файл в корне всей файловой системы, где его точно не будет.

Как дополнительное замечание: когда я начинаю работу над плагином, который будет состоять из нескольких файлов и/или подключать CSS или JS файлы, я обычно задаю несколько констант для удобства. Вот пример.

<?php
define( 'CD_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'CD_PLUGIN_URL', plugin_dir_url( __FILE__ ) );

plugin_dir_path и plugin_dir_url удобны тем, что всегда возвращают пути/URL с завершающим слешем.

Затем для подключения файлов я использую эти константы. Это избавляет от необходимости каждый раз вызывать dirname(__FILE__) при каждом включении файла.

Эти константы можно использовать для подключения файлов...

require_once( CD_PLUGIN_PATH . 'path/to/file.php' );

или для подключения скриптов и стилей...

<?php
add_action( 'wp_enqueue_scripts', 'wpse35088_enqueue' );
function wpse35088_enqueue()
{
    wp_enqueue_script( 'wpse35088-script', CD_PLUGIN_URL . 'path/to/script.js' );
}
30 нояб. 2011 г. 04:30:36