Функция get_home_path() в WordPress: примеры использования

## Функция GET_HOME_PATH()

Функция get_home_path() в WordPress возвращает абсолютный путь к корневому каталогу установки WordPress. Это полезно, если вам нужно узнать, где находятся файлы вашего сайта.

### Возврат значения

Функция возвращает строку — полный путь к корневой папке установки WordPress.

### Использование

Для вызова функции используйте следующий код:

```php
get_home_path();

Примеры

Пример 1: Получение пути

Предположим, что ядро WordPress установлено в подкаталоге wp. Вот как вы можете использовать функцию:

echo get_home_path();
echo ABSPATH;                     
echo $_SERVER['SCRIPT_FILENAME'];
echo $_SERVER['DOCUMENT_ROOT'];

/*
Здесь вывод будет примерно таким:
path/sites/site.com/www/
path/sites/site.com/www/wp/
path/sites/site.com/www/wp/wp-admin/options-permalink.php
path/sites/site.com/www
*/

Важно: Функция get_home_path() доступна только из админ-панели (backend) вашего сайта. Если вы попытаетесь вызвать ее на фронтальной части сайта, вы получите ошибку. Чтобы избежать этой ошибки, проверьте, что находитесь в админ-панели, вызвав функцию is_admin(), иначе вы получите сообщение об ошибке:

Fatal error: Uncaught Error: Call to undefined function get_home_path().

Для корректной работы функции убедитесь, что файл file.php подключен:

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

Пример 2: Получение пути к главной папке сайта

Этот каталог обычно содержит файлы wp-config.php и .htaccess. Допустим, вам нужно изменить файл .htaccess. Вы можете использовать следующий код:

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

$home_path = get_home_path();
$htaccess_file = $home_path . '.htaccess';

/*
 * Если файл не существует, проверяем, есть ли права на запись в директорию,
 * а также имеем ли мы какие-либо правила. В противном случае проверяем права на запись в файл.
 */
if ( 
    ( ! file_exists($htaccess_file) && is_writable($home_path) ) || 
    is_writable( $htaccess_file )
) {
    $rules = '
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
';

    $rules = array_filter( explode( "n", $rules ) );

    $done = insert_with_markers( $htaccess_file, 'Мои пользовательские правила', $rules );
}
else {
    echo '$htaccess_file не существует или закрыт для записи.';
}

Изменения в коде

Функция get_home_path() была добавлена в версии 1.5.0 WordPress. Вот как она выглядит в коде:

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_attached_file()
  • get_parent_theme_file_path()
  • get_template()
  • wp_upload_dir()

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *