Изменить URL-ссылку логотипа

16 февр. 2017 г., 17:56:24
Просмотры: 60.5K
Голосов: 3

Я пытаюсь изменить URL логотипа сайта на "mywebsite.com/side2", но это не работает. Кто-нибудь может подсказать, где ошибка в приведенном ниже коде?

add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
    // Возвращаем URL-адрес домашней страницы с добавлением 'side2'
    return home_url( 'side2' );
}
4
Комментарии

Привет, ты пытаешься изменить URL логотипа на главной странице или в панели входа?

Johansson Johansson
16 февр. 2017 г. 18:03:47

Логотип на главной странице

Pavanello Pavanello
16 февр. 2017 г. 18:42:10

@JackJohansson Я разобрался в чем проблема, функция login_headerurl предназначена для страницы входа, а мне нужно для основного логотипа сайта. Ты знаешь какая функция отвечает за URL основного логотипа сайта? Ты был прав!

Pavanello Pavanello
16 февр. 2017 г. 19:20:15

Да, я только что опубликовал ответ на этот вопрос. Скопируйте часть вашего header.php, которая генерирует URL для вашего вопроса, и я обновлю свой ответ.

Johansson Johansson
16 февр. 2017 г. 20:03:20
Все ответы на вопрос 8
2

Фильтр login_headerurl используется для изменения URL логотипа на странице входа, согласно Кодексу.

Чтобы изменить URL логотипа на главной странице, вам нужно изучить файл header.php вашей темы. Именно там находится ваш логотип и ссылка на него. В зависимости от темы, способ генерации URL может отличаться.

Откройте файл header.php через Внешний вид > Редактор в админ-панели и найдите строку, содержащую логотип. Там вы сможете изменить его на любой желаемый URL.

16 февр. 2017 г. 18:47:34
Комментарии

Хорошо, но мне нужно изменить ссылку в function.php, потому что ссылка будет меняться в зависимости от профиля пользователя. Приведённый скрипт — это только часть, которая изменяет URL.

Pavanello Pavanello
16 февр. 2017 г. 18:54:57

Вы можете изменить её на основе пользователя и в headers.php. Если разработчик темы просто использует bloginfo(url) для вывода URL, то изменить его с помощью functions.php невозможно, если только вы не измените ВСЮ функцию bloginfo() или любую другую используемую функцию.

Johansson Johansson
16 февр. 2017 г. 19:05:24
2

Если автор темы использует bloginfo('url') для вывода URL, вы можете сделать следующее.

bloginfo('url') является обёрткой для echo get_bloginfo('url'), который в свою очередь является обёрткой для home_url(), а тот — обёрткой для get_home_url(). Исходный код этой функции доступен здесь.

Как видно, в конце функции доступен фильтр, который можно использовать для изменения значения домашнего URL.

Отредактировано так, чтобы фильтры срабатывали только при вызове обоих фильтров home_url и custom_logo.

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 );
}
16 февр. 2017 г. 20:11:31
Комментарии

Хорошая функция, если он хочет изменить каждый bloginfo('url') на своем сайте, чтобы старый URL стал недоступен!

Johansson Johansson
16 февр. 2017 г. 20:13:27

Верное замечание. Изменил ответ так, чтобы это работало только при совместном вызове custom_logo() и home_url()

Nathan Johnson Nathan Johnson
16 февр. 2017 г. 21:39:51
1

Вы можете использовать эту функцию для изменения 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' );
28 авг. 2017 г. 19:25:41
Комментарии

Это относится только к логотипу на странице входа, а не к логотипу в шапке сайта, о котором говорил автор вопроса.

YourManDan YourManDan
14 мая 2024 г. 23:40:35
0

Если кто-то столкнулся с такой же проблемой, я некоторое время назад создал плагин SMNTCS Custom Logo Link, который работает со всеми темами, имеющими 100 000+ активных установок. Если ваша тема не входит в их число, просто создайте запрос на https://github.com/nielslange/smntcs-custom-logo-link/issues, и я с радостью расширю функционал плагина.

6 апр. 2020 г. 16:38:44
0

Самый простой способ — добавить этот jQuery код

jQuery(document).ready(function($){  
        $("a.logo-class").attr("href", "https://google.com");
});
7 июн. 2020 г. 08:47:50
2

В итоге я остановился на следующем 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', чтобы он указывал на класс элемента ссылки логотипа, специфичный для используемой вами темы.

24 авг. 2021 г. 21:08:31
Комментарии

Думаю, было бы лучше исправить страницу. Я бы переживал, что браузер начнет загружать старое изображение, или может произойти кратковременный прыжок верстки, если у изображений не заданы атрибуты высоты и ширины. Должен быть способ изменить это в вашей теме.

Rup Rup
27 авг. 2021 г. 12:41:57

Согласен. Это не идеальное решение, но я потратил около часа, пытаясь найти способ изменить это в теме, в том числе просматривая код темы, и не смог найти способа.

Adrian Laurenzi Adrian Laurenzi
30 авг. 2021 г. 18:17:37
1
-1

Вы можете использовать функцию get_page_by_path следующим образом:

add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {

  return get_page_by_path( 'side2' );
}
16 февр. 2017 г. 18:07:37
Комментарии

использование get_page_by_path, как вы предложили выше, не сработало!

Pavanello Pavanello
16 февр. 2017 г. 18:51:14
2
-1

Я тоже хотел сделать это на основе темы _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>'

и это работает для всех страниц.

Не уверен, что это очень правильное решение, и буду рад услышать комментарии по этому поводу.

6 февр. 2025 г. 21:55:34
Комментарии

Настоятельно не рекомендуется изменять файлы ядра WordPress (такие как тот, который вы предлагаете). При каждом обновлении WordPress есть вероятность, что ваши изменения будут полностью перезаписаны новым кодом, который выпустит команда разработчиков WordPress Core.

Howdy_McGee Howdy_McGee
6 февр. 2025 г. 22:17:43

Да, я знаю. Я сказал, что это неортодоксально. Но еще более рекомендуется найти решение этой проблемы. Не помогает просто говорить "вы не можете этого сделать, но я не знаю, как это реализовать"... Ни одно другое решение на этой странице мне не подошло. И если есть вероятность, что мне придется делать это после каждого обновления, значит, так тому и быть. Это занимает около 30 секунд.

bastos bastos
12 февр. 2025 г. 07:58:29