Как получить корневой URL wordpress (ABSPATH изменяется на каждой странице)

#php #wordpress

#php #wordpress

Вопрос:

У меня установлен WordPress на:

http://example.com/wordpress/

На главной странице константа ABSPATH выводит именно это, но когда вы переходите на какую-либо другую страницу, например:

http://example.com/wordpress/contact

ABSPATH также превращается в:

http://example.com/wordpress/contact

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

Я немного смущен тем, почему ABSPATH изменяет значение, разве константы не являются неизменяемыми после их определения?

Спасибо!

Ответ №1:

вы можете использовать Site_url(); … 🙂

Ответ №2:

У меня была такая же проблема на странице администратора. Вам не только нужно избегать дополнительной папки, которая вставляется, WP может быть установлен в саму папку.

Вот способ, хотя и несколько запутанный и написанный для наглядности, который вносит коррективы в эти различные элементы. Это также позволяет избежать DIRECTORY_SEPARATOR проблем:

 if (!defined(PLUGINUPDATEMGR_DOMAIN)) 
    define("PLUGINUPDATEMGR_DOMAIN", strtolower( $_SERVER['HTTP_HOST'] ) );

$wprootbase = strtolower( site_url() );

$wprootstart = strpos( $wprootbase, PLUGINUPDATEMGR_DOMAIN )   
    strlen( PLUGINUPDATEMGR_DOMAIN  ); //   1 to strip the leading slash/backslash

$wprootend = strlen( $wprootbase );

$wproot = substr( $wprootbase, $wprootstart, $wprootend );

echo "Local WP path = '" . $wproot . '"';
  

Встряхивается, не перемешивается, вывод:

 Local WP path = '/wp/wordpress-3.4.2" 
  

Конечно, YMMV =;?)

Ответ №3:

ABSPATH возвращает абсолютный путь к php-файлу на сервере, такому как /var/www / wordpress/, проверьте вашу установку wordpress.

Ответ на вашу проблему заключается в использовании:

site_url()

или

bloginfo()

Как упоминали люди выше.

Вы также могли бы использовать

$var = get_bloginfo(‘wpurl’);

Чтобы получить значение в переменной

Ответ №4:

Правильный ответ

 <?php echo esc_url( home_url( '/' ) ); ?>
  

Вот некоторый текст, потому что у меня должно быть не менее 30 символов

Комментарии:

1. Этому вопросу более 3 лет, и на него уже есть принятый ответ. Попробуйте ответить на более актуальные вопросы, пожалуйста.

2. и это не следует путать с get_home_path() , который возвращает корневой путь, такой как /var/www/wordpress/