plugins_url () неправильно возвращает URL-адрес с субдоменом www

Я работаю над плагином, который мы будем называть «my-plugin» для целей этого вопроса. Каталог my-plugin выглядит так:

my-plugin/ |- image.jpg |- script.js |- script.php |- plugin.php |- ajax.php 

В script.php у меня есть раздел кода, который указывает некоторые JS. В нем мне нужен URL-адрес для ajax.php. например:

 <script type="text/javascript"> foo = jQuery.getJSON("<?= plugins_url('ajax.php', __FILE__); ?>", function (data) { /* ... */ }); </script> 

Мой домен WordPress настроен с базовым URL-адресом без субдомена, например: http://example.com/, однако URL-адрес, возвращаемый из plugins_url http://www.example.com/wp-content/plugins/my-plugin/ ajax.php . К сожалению, это имеет побочный эффект от того, что сценарий не загружается, поскольку getJSON jQuery последовательно «отменяет» запрос, когда ответ HTTP 301 возвращается для искаженного адреса.

Почему plugins_url (в WordPress 3.3.1) возвращает URL-адрес с «www», когда параметр «Адрес сайта» в WordPress отсутствует?

Solutions Collecting From Web of "plugins_url () неправильно возвращает URL-адрес с субдоменом www"

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

 define('WP_SITEURL', 'http://example.com/'); 

И некоторые альтернативные определения, http://codex.wordpress.org/Editing_wp-config.php#WordPress_address_.28URL.29

Если это не сработает, я бы проверил ваш .htaccess.

Функция plugins_url() строит строку URL на основе URL-адреса сайта, который вы настроили. Помните, что URL-адрес WordPress и URL-адрес сайта – это две разные вещи.

plugins_url() является просто конкатенацией:

  • get_option( 'site_url' )
  • /wp-content
  • Папка плагина

Поэтому, если вы видите www на своем сайте, это потому, что site_url настроен на использование www.