Вопрос или проблема
Я пытаюсь изменить URL логотипа сайта на “mywebsite.com/side2”, но это не работает, может кто-то сказать, где ошибка в коде ниже?
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return home_url( 'side2' );
}
Фильтр login_headerurl
предназначен для изменения URL логотипа на странице авторизации, согласно Codex.
Чтобы изменить URL логотипа на главной странице, вам нужно взглянуть на файл header.php
вашей темы. Ваш логотип и его ссылка включены там. В зависимости от вашей темы, способ генерации URL может быть разным.
Получите доступ к вашему файлу header.php
через Внешний вид > Редактор
в админ-панели и найдите строку, содержащую логотип. Там вы сможете изменить её на любую желаемую.
Если автор темы использует bloginfo('url')
для вывода URL, вы можете сделать следующее.
bloginfo('url')
является оберткой для echo get_bloginfo('url')
, которая в свою очередь является оберткой для home_url()
, а она в свою очередь — для get_home_url()
. Код этой функции доступен здесь.
Как видно, в конце функции доступен фильтр, который вы можете использовать для изменения значения URL домашней страницы.
Отредактировано так, чтобы фильтры срабатывали только для home_url, и оба фильтра custom_logo и home_url вызывались.
add_filter( 'home_url', 'wpse_106269_home_url', 10, 4 );
function wpse_106269_home_url( $url, $path, $orig_scheme, $blog_id ) {
add_filter( 'custom_logo', 'wpse_106269_custom_logo', 10, 2 );
}
function wpse_106269_custom_logo( $html, $blog_id ) {
//* Удаляем фильтр
remove_filter( 'custom_logo', 'wpse_106269_custom_logo', 10, 2 );
//* Используем str_replace() для изменения ссылки
return str_replace( $old_url, $new_url, $html );
}
Вы можете использовать эту функцию для изменения URL логотипа в WordPress.
Просто добавьте этот код в файл function.php
// изменение URL на логотипе для переадресации
function mb_login_url() { return home_url(); }
add_filter( 'login_headerurl', 'mb_login_url' );
// изменение alt текста на логотипе, чтобы показывало имя вашего сайта
function mb_login_title() { return get_option( 'blogname' ); }
add_filter( 'login_headertitle', 'mb_login_title' );
Чтобы изменить логотип на странице авторизации админки
function my_login_logo_one() {
?>
<style type="text/css">
body.login div#login h1 a {
background-image: url(http://sitetitle.com/logo-1.png);
}
</style>
<?php }
add_action( 'login_enqueue_scripts', 'my_login_logo_one' );
Если кто-то столкнется с той же проблемой, я создал плагин SMNTCS Custom Logo Link некоторое время назад, который работает со всеми темами, у которых более 100.000 активных установок. Если тема, которую вы используете, не среди этих тем, просто создайте запрос на https://github.com/nielslange/smntcs-custom-logo-link/issues, и я с удовольствием расширю плагин.
Самый простой способ — добавить этот код jQuery
jQuery(document).ready(function($){
$("a.logo-class").attr("href", "https://google.com");
});
Я в итоге выбрал подход на основе Javascript, который сработал для моих целей. Я использую тему от https://theme.co/x. Я установил плагин Insert Headers and Footers и затем добавил следующий Javascript (раздел Footer):
<script>
document.getElementsByClassName('x-brand')[0].setAttribute("href", "https://example.com");
</script>
Вам нужно будет изменить 'x-brand'
, чтобы он указывал на класс элемента href логотипа, специфичного для используемой вами темы.
Вы можете использовать get_page_by_path следующим образом:
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return get_page_by_path( 'side2' );
}
Я тоже хотел это сделать, основываясь на теме _underscore.
Я не смог найти готовый способ.
Поэтому я использовал веб-инспектор, чтобы найти div, содержащий логотип заголовка.
Он находится в wp-includes/theme.php, строка 1802 в моей установке.
Я изменил
'<div id="wp-custom-header" class="wp-custom-header">%s</div>'
на
'<div id="wp-custom-header" class="wp-custom-header"><a href="https://www.theURLToYourHomepa.ge">%s</a></div>'
и это работает для всех страниц.
Я не уверен, что это очень ортодоксально, и я с нетерпением жду любых комментариев по этому поводу.
.
Ответ или решение
Замена URL-адреса логотипа на сайте WordPress может быть сложной задачей, особенно если вы не знакомы с внутренними механизмами WordPress и его фильтрами. Давайте рассмотрим, как это сделать, разбирая все шаги подробно.
Теория
WordPress предлагает несколько способов управления элементами страницы, включая изменение URL-адреса, на который ссылается логотип сайта. Основной способ управления URL-адресом логотипа – это работа через соответствующие фильтры и функции WordPress. При правильном использовании, можно изменять URL-адреса логотипов в различных частях сайта – на странице входа, в шапке сайта и т. д.
Давайте рассмотрим основные теоретические аспекты, которые помогут нам выполнить эту задачу:
-
Фильтры WordPress: Они позволяют изменять или расширять функциональность через использование хуков. В нашем случае, они позволяют перенастроить URL логотипа.
-
Шаблонные файлы темы: Такие как
header.php
, которые содержат HTML-разметку для шапки сайта и часто включают в себя вызов функции, определяющей URL логотипа. -
JavaScript и jQuery: Могут быть использованы для динамического изменения атрибутов URL после загрузки страницы.
Пример
-
Изменение URL на странице входа в систему
Если вы хотите изменить URL на странице входа, вам необходимо использовать фильтр
login_headerurl
. Пример такого кода приведен ниже:add_filter('login_headerurl', 'custom_loginlogo_url'); function custom_loginlogo_url($url) { return home_url('side2'); // Замените 'side2' на любое другое значение, нужное вам }
Этот код добавляется в файл
functions.php
вашей темы. Он изменяет ссылку на логотип в экране входа в систему WordPress на ваш сайт. -
Изменение URL в шапке сайта
Если вас интересует изменение URL-адреса логотипа в шапке, вам, вероятно, придется редактировать файл
header.php
вашей темы. Вот как это можно сделать:<a href="<?php echo esc_url(home_url('/side2')); ?>" class="site-logo"> <!-- HTML логотипа --> </a>
В этом примере, мы изменяем атрибут
href
тега<a>
, отвечающего за ссылку логотипа, чтобы указывать наhome_url('/side2')
. -
Использование JavaScript для динамического изменения URL
Если вы не хотите вмешиваться в PHP-код, вы можете использовать JavaScript для изменения URL. Пример на jQuery:
jQuery(document).ready(function($){ $("a.logo-class").attr("href", "https://mywebsite.com/side2"); });
Убедитесь, что
logo-class
заменено на конкретный класс вашего HTML элемента, содержащего логотип. -
Плагин для изменения URL логотипа
Если ни один из вышеперечисленных способов вас не устраивает или вы хотите более гибкое решение, возможно, стоит использовать плагин. Например,
SMNTCS Custom Logo Link
, который может быть расширен для поддержки вашей темы.
Применение
Теперь, когда вы понимаете основные способы изменения URL-адреса логотипа, вы можете выбрать наиболее удобный для вас подход. Вот рекомендации:
- Новички: Используйте готовые плагины для достижения этой цели. Это наиболее безопасный способ без риска поломать ваш сайт.
- Опытные пользователи: Редактируйте тему (особенно файл
header.php
) и используйте фильтры непосредственно вfunctions.php
для более тонкой настройки. - Разработчики: Используйте JavaScript для динамичного изменения элементов страницы, если вам требуется больше гибкости и нет доступа к изменениям темы.
В заключение, изменение URL логотипа часто зависит от конкретного способа реализации вашего сайта и может потребовать сочетания различных подходов для достижения оптимального результата. Внимательно тестируйте ваши изменения, чтобы убедиться, что они работают как ожидается и не влияют на другие аспекты вашего сайта.