Я пытаюсь получить значение, похожее на URL-адрес сайта WordPress, для идентификации определенной установки WordPress.
Поскольку get_site_url
может быть изменен (с плагином или напрямую), я пришел к следующему:
untrailingslashit('http://'.$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'],'', ABSPATH));
Это дает мне хороший результат для определения WordPress на основе этого адреса, но я любопытству, если это может вызвать проблемы на некоторых установках сервера?
Вот мой ответ, основанный на информации, которую вы предоставили.
Создайте функцию. Сначала проверьте, соответствует ли домашний URL-адрес константе в wp-config. Если так, то есть URL. Он отменяет любое значение DB, поэтому, если он не установлен правильно, сайт не будет функционировать.
Если это не задано, запустите ручной запрос БД, чтобы получить значение дома из таблицы опций. Запустив его вручную, вместо использования get_option, это значение не может быть изменено плагином, прежде чем вы его используете.
function wpse_get_license_url() { global $wpdb; if ( defined( 'WP_HOME' ) ) { return WP_HOME; } else { $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'home' ) ); return $row->option_value; } }
Я надеюсь, что эта ссылка может помочь вам лучше понять последствия использования
home_url () vs site_url ()
home_url() will only return the mapped domain on or after the init has fired. Calling it before then will return the .wordpress.com domain. If you accidentally use site_url() in your templates, theme-side links will still redirect correctly to the home_url() equivalent. home_url() is the preferred method, as it avoids the above redirect.
blogininfo('siteurl'); get_option('home'); home_url(); site_url();