OPENCAGE製テーマのようにカスタムロゴ機能を実装しているWordPressテーマでは、管理画面(テーマカスタマイザー)からヘッダーロゴを設定できるようになっています。

このロゴ画像にはリンク先としてサイトアドレス(URL)が設定され、どのページからクリックしてもホーム(トップページ)にリンクするようになっています。
ロゴのリンク先をホーム以外に変更する方法
サイト構成によっては、ロゴのリンク先を変更したいという場合もあるかと思います。
例えば親サイトなど、別の関連サイトにリンクさせたい場合は、本記事の方法で解決できます。
このような場合、functions.phpファイルを使用してカスタマイズする方法があります。下記のコードを追加して実現できるので、必要に応じてお試しください。
functions.phpにコードを追加
下記のコードを子テーマのfunctions.phpに追加します。
子テーマが存在しないテーマの場合は、親テーマのfunctions.phpに記述します。OPENCAGE製のテーマは専用の子テーマを用意していますので、こちらの導入をおすすめします。
// ロゴのリンク先を任意のURLに変更
function my_custom_logo_url() {
$custom_link = 'https://example.com'; // ここに任意のURLを入力
$custom_logo_id = get_theme_mod( 'custom_logo' );
if ( ! $custom_logo_id ) {
return ''; // ロゴが設定されていない場合は空を返す
}
$logo_img = wp_get_attachment_image( $custom_logo_id, 'full', false, array(
'class' => 'custom-logo',
) );
if ( ! $logo_img ) {
return ''; // ロゴが取得できない場合も空を返す
}
$html = sprintf(
'<a href="%1$s" class="custom-logo-link no-icon">%2$s</a>',
esc_url( $custom_link ),
$logo_img
);
return $html;
}
add_filter( 'get_custom_logo', 'my_custom_logo_url' );
上記のように記述することで、$custom_link
の変数に入力した任意のURLをヘッダーロゴのリンク先として設定できます。
ロゴを設定していない場合(テキストタイトルの場合)はURLは変更されません。
応用編:トップページとそれ以外でリンク先を変える
トップページとそれ以外のページで、ヘッダーロゴのリンク先を変えることもできます。
// トップページとそれ以外のページでロゴのリンク先を変更
function my_custom_logo_url() {
$custom_logo_id = get_theme_mod( 'custom_logo' );
if ( ! $custom_logo_id ) {
return '';
}
// 条件に応じてリンク先を切り替える
$custom_link = is_front_page() ? 'https://example.com/top' :
'https://example.com/other';
$logo_img = wp_get_attachment_image( $custom_logo_id, 'full', false, array(
'class' => 'custom-logo',
) );
return sprintf(
'<a href="%1$s" class="custom-logo-link no-icon">%2$s</a>',
esc_url( $custom_link ),
$logo_img
);
}
add_filter( 'get_custom_logo', 'my_custom_logo_url' );
https://example.com/top
はトップページのヘッダーロゴに設定するリンク先https://example.com/other
は下層ページのヘッダーロゴに設定するリンク先
カスタマイズの際はFTPを使用しましょう
functions.phpは記述内容を謝るとサイトが表示されなくなる等の不具合を引き起こすこともある上、サーバー環境によっては、テーマファイルエディターから編集できない場合もあります。
カスタマイズの際は、FTPからfunctions.phpをダウンロードして、バックアップ用のファイルも複製しておくことをおすすめします。
もし、カスタマイズしたfunctions.phpをFTPでアップロードして問題が起きた場合は、バックアップしておいたファイルで上書きアップロードして、ひとまず元の状態に戻しましょう。