_custom_logo()関数の個別のコンポーネントを使用して、ロゴの独自の表示を作成しようとしています。
RLと画像参照に個別にアクセスする方法について誰かに教えてもらえますか?
多くの人がURLを変更する方法を尋ねてきましたが、これは私が回答を必要とする質問ではありません。私はこのようにコードを操作できるようにしたいと思います(これは私の計画の基本的な例なので、プルスルーできるようにする2つのコンポーネントを理解できます)。
<div class="site-branding">
<a href="<?php get_custom_logo_url(); ?>" class="box-link">
<img src="<?php get_custom_logo_src(); ?>" class="site-logo" alt="Logo">
</a>
</div>
私は空白のテーマを使用しており、ロゴとリンクはすでにWordpressのバックエンドに配置されています。
このスニペットをヘッダーで使用すると、ロゴとリンクが期待どおりに表示されます。
<?php the_custom_logo(); ?>
すべての貢献者、ジェイソンに感謝します。
wp_get_attachment_image_src
を使用して、画像のプロパティとURLを取得します。
$logo = get_theme_mod( 'custom_logo' );
$image = wp_get_attachment_image_src( $logo , 'full' );
$image_url = $image[0];
$image_width = $image[1];
$image_height = $image[2];
編集:コメントに基づいて情報を追加します。
それが指すURLは単にhome_url
で作成されます。
esc_url( home_url( '/' ) );
このメソッドを使用するときにしばしば忘れられるもう1つのことは、メディアに設定されている場合、altのコンテンツを尊重することです。
$alt = get_post_meta( $logo, '_wp_attachment_image_alt', true );
if ( empty( $alt ) ) {
// Use site title if no alt is provided.
$alt = get_bloginfo( 'name', 'display' );
}
get_custom_logo のソースを確認することをお勧めします。
WordPress.org/themes でリリースするためにこのテーマを開発している場合も、言及する価値があります。独自のソリューションを展開する場合は、the_custom_logo
またはget_custom_logo
を使用する必要があります。
このため、get_custom_logo
にはHTML出力用のフィルターがあり、必要なビットを使用して置き換えるのが最適な場合があります。関数get_custom_logo
(the_custom_logo
で使用)も、マルチサイトのように扱い、カスタマイザープレビュー用にプレースホルダーが存在することを確認します。使用法は次のようになります。
add_action( 'get_custom_logo', function( $html ) {
$new_url = 'href="' . get_theme_mod( 'custom_logo_url', esc_url( home_url( '/' ) ) ) .'"';
$new_link_class = 'class="box-link"';
$html = str_replace( 'href="' . esc_url( home_url( '/' ) ) . '"', $new_url, $html );
$html = str_replace( 'class="custom-logo-link"', $new_link_class, $html );
return $html;
} );
これにより、カスタマイザコントロールから取得できるtheme_mod custom_logo_url
の値が読み取られ、例ではクラスが.custom-logo-link
から.box-link
に変更されます。