自定义徽标URL|帮助我打印插入到主题中的自定义徽标的URL

时间:2020-01-22 作者:Jason Is My Name

我正在尝试使用\\u custom\\u logo()函数的单独组件为徽标创建自己的显示。

Please can someone inform me as to how I can access the url and the image reference separate to each other?

很多人问过如何更改URL,这不是我需要回答的问题。我希望能够像这样操作代码(这是我计划的一个基本示例,因此您能够理解我希望能够完成的两个组件):

<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(); ?>
感谢所有贡献者,Jason。

1 个回复
最合适的回答,由SO网友:Tim Elsass 整理而成

使用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];
Edit: 根据您的评论添加更多信息

它指向的URL只需使用home_url:

esc_url( home_url( \'/\' ) );
使用此方法时,另一件经常被忘记的事情是,如果alt的内容在媒体中设置,则要尊重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_logoget_custom_logo 过度推出自己的解决方案。

因此,中的HTML输出有一个过滤器get_custom_logo, 使用和替换所需的位可能是最好的。功能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\\u mod的值custom_logo_url 它可以来自customizer控件,并从.custom-logo-link.box-link 在您的示例中。

相关推荐

WordPress-Site可以通过x.x/index.php访问-但不能直接在没有index.php的IP上访问

全新WordPress安装,在RPi 4上安装了Avade主题-在上访问时效果良好http://203.0.113.111/index.php 从外部连接,但如果我删除index.php 我什么都没有得到-连接被拒绝。这是正常行为吗?我不应该立即重定向到WP安装索引页吗?我已经将路由器中的端口80转发到Pi的内部IP,所以我无法理解这一点。我甚至修改了.htaccess 在里面/var/www/html 使用以下行:DirectoryIndex index.html index.php 但是,唉