web-dev-qa-db-ja.com

Itempropをロゴからカスタムロゴの画像に変更しますか?

私は私のテーマのヘッダにschema.orgのマークアップを追加していますが、私が使っているテーマはthe_custom_logo();を呼び出しており、デフォルトではitempropとして 'logo'を使用しています。

functions.phpファイルでこれをimageに変更する方法はありますか?

ありがとう。

これはfunctions.phpファイルからの現在の呼び出し関数です。

add_theme_support('custom-logo');
3
Jake

私はあなたがitemprop="logo"に関してグーグルバリデーターに問題があると思います。 get_custom_headerフィルタにフックしてHTML構造を変更することができます。

add_filter( 'get_custom_logo', 'my_custom_logo' );
// Filter the output of logo to fix Googles Error about itemprop logo
function my_custom_logo() {
    $custom_logo_id = get_theme_mod( 'custom_logo' );
    $html = sprintf( '<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>',
            esc_url( home_url( '/' ) ),
            wp_get_attachment_image( $custom_logo_id, 'full', false, array(
                'class'    => 'custom-logo',
            ) )
        );
    return $html;   
}

上記のコードをあなたのテーマのfunctions.phpに追加するか、あるいはステップ{ ここ に従って子テーマを作成し、それをfunctions.phpファイルで使用してください。

編集する

@ birgireのコメントに基づいて、私はwp_get_attachment_image()をフィルタリングするための別の関数を書きました。

add_filter('wp_get_attachment_image', function ($attachment_id, $size , $icon , $attr) {
        // If the class is 'custom-logo', then change the itemprop to image
        if ($attr['class'] =='custom-logo') {
            $attr['itemprop'] = 'image';
        }
        return $attr;
},10,3);
2
Jack Johansson