Intereting Posts
Добавить текст ссылки Вернуться к разделу Вставка / редактирование ссылки Плагин не может записывать в базу данных, даже если разрешения корректны? Как добавить список в редактор TinyMCE? Как мы храним сообщения об ошибках / успехах на следующей странице Не передать правильное значение get_post_ancestors? Как я могу get_post_meta () наиболее эффективным способом? Организация нечувствительного к времени контента Как устаревать устаревшую версию API? Значение приращения (значение = значение + 1) из $ wpdb-> update Возможность загрузки только после отправки по электронной почте Получение WordPress для работы внутри приложения rails 3 Как импортировать класс в приватный плагин? Как мы можем учитывать типы сообщений при построении постоянных ссылок? Вставка строк в пользовательскую таблицу, когда активирован плагин Поиск и замена текста во всех сообщениях

В чем разница между get_home_path () и ABSPATH?

В чем разница между get_home_path() и ABSPATH ? Не стоит ли указывать на установочный корень WordPress?

Solutions Collecting From Web of "В чем разница между get_home_path () и ABSPATH?"

Они должны делать то же самое, но при определенных условиях не могут.

Прежде всего отметим:

  • что описание записи в кодексе вводит в заблуждение
  • что wp-admin/includes/file.php должен быть включен в контекст else, вызывающий get_home_path() приведет к вызову неопределенной функции.

Что касается ввода кода,

Описание

Получите абсолютный путь файловой системы к корню установки WordPress.

Возвращаемое значение

Полный путь файловой системы к корню установки WordPress. Если вы устанавливаете WordPress в подпапку, он будет показывать местоположение вложенной папки

Примеры

 $path = get_home_path(); print "Path: ".$path; // Return "Path: /var/www/htdocs/" or "Path: /var/www/htdocs/wordpress/" if it is subfolder 

Он указывает, что возвращаемое значение вернет путь к вложенной папке, если вы установили WordPress в подкаталог. Это на самом деле неверно.

get_home_path() вернет корневой каталог вашей установки WordPress, даже если он установлен в подкаталоге. Это и есть цель функции.

Предположим, что ваша установка WordPress находится в подкаталоге /dev ,

Если вы зарегистрируете вызов ABSPATH , то результатом будет /var/www/htdocs/dev который не является корнем вашей установки. Корнем вашей установки является /var/www/htdocs .

ABSPATH сначала определяется в wp-load.php который будет находиться в /var/www/htdocs/dev/wp-load.php поэтому здесь ABSPATH примет свое определение.

Если вы проверите get_home_path() далее, вы заметите, что если site_url и home_url отличаются, то подстрока берется по пути, определяемому положением (первой случайностью) подкаталога, найденного внутри строки.

 function get_home_path() { $home = set_url_scheme( get_option( 'home' ), 'http' ); $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); $home_path = trailingslashit( $home_path ); } else { $home_path = ABSPATH; } return str_replace( '\\', '/', $home_path ); } 

Поэтому в результате этого get_home_path() и ABSPATH могут возвращать разные результаты, если у вас установлен WordPress в подкаталоге.

Во-вторых, вызов get_home_path() должен выполняться в контексте, в котором уже включен wp-admin/includes/file.php .

В качестве примера, использующего get_home_path() в admin_init отлично, когда использовать его внутри init нет.

Видя, как этот файл включается только из контекста admin (dashboard), если вам абсолютно необходимо это вне этого контекста, вам нужно будет включить файл непосредственно перед вызовом функции,

require_once(ABSPATH . 'wp-admin/includes/file.php');

По иронии судьбы (или нет), который использует ABSPATH : D