home_url на IIS отсутствует постоянная ссылка index.php

Я использую IIS без какой-либо перезаписи URL-адресов, которые включают index.php в конце. Пользовательская структура постоянной ссылки: /index.php/%year%/%monthnum%/%postname%/

Проблема в том, что функция home_url не включает index.php, поэтому, если я хочу ссылаться на пользовательскую страницу <?php echo home_url() . '/my-page/'; ?> <?php echo home_url() . '/my-page/'; ?> <?php echo home_url() . '/my-page/'; ?> возвращает http://domain.com/my-page/, но мне нужно http://domain.com/index.php/my-page/ .

Есть ли функция WordPress, которая будет включать index.php или мне нужно добавить пользовательский бит кода?

NB Я пробовал Google , но большинство ссылок указывают на повторную запись URL-адреса, который я не хочу.

Solutions Collecting From Web of "home_url на IIS отсутствует постоянная ссылка index.php"

Вы можете фильтровать home_url :

 add_filter( 'home_url', 'wpse102523_home_url' ); function wpse102523_home_url( $url ) { return $url . 'index.php/'; } 

Ссылка: База данных фильтров Адама Брауна

Попытка опции add_filter на самом деле не работала для меня. Код становится довольно уродливым, поскольку функция home_url оказывает влияние на постоянные ссылки, которые имеют index.php, и все мои попытки заставить его работать не удались.

Лучшим решением, которое я придумал, было изменение адреса сайта (aka home_url ) в разделе «Общие настройки» как http://domain.com/index.php . Затем измените константы, чтобы быть нормальными, например /%year%/%monthnum%/%postname%/ . Затем это приводит к тому, что большинство ссылок работают. Единственной проблемой является ссылка http://domain.com/index.php/ (обратите внимание на конец «/»). Для меня это не имеет значения, поскольку это мой сайт localhost, но в противном случае просто исправить этот случай, и сайт должен работать нормально.

Просто запустите любого, кто хочет продолжить движение по маршруту add_filter , здесь для моих грехов – моя попытка:

 <?php if ($is_iis7 && !iis7_supports_permalinks()) { if (!is_admin()) { add_filter( 'home_url', 'icc_iispb_url' ); } } function icc_iispb_url($url) { if (strpos($url, 'index.php') === false) { $url = str_replace(get_option('home'), get_option('home').'/index.php', $url); } return $url; } ?>