我在 WordPress 中构建了一个自定义画廊类型作为新的短代码。
但是我想让它对 SEO 更友好,所以我尝试调用 alt 标签,如果找不到 alt 标签,请将其替换为标题。
到目前为止,我有以下内容(并且工作正常),但如果 $alt 为空,我会尝试让 $alt 回退到标题?任何想法/帮助表示赞赏!
$bigimageUrl = wp_get_attachment_image_src($attachment_id,$size='full-size');
$littleimageUrl = wp_get_attachment_image_src($attachment_id,$size='thumbnail');
$title_raw = $attachment->post_title;
$title = preg_replace("/[^a-zA-Z0-9\s]/", " ", $title_raw);
$alt_raw = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);
$alt = preg_replace("/[^a-zA-Z0-9\s]/", " ", $alt_raw);
echo '<img class="gallerytype" title="'; echo $title; echo '" alt="'; echo $alt; echo '" data-rsTmb="'; echo $littleimageUrl[0]; echo '" src="'; echo $bigimageUrl[0]; echo '"/> ';
不要一个接一个地使用
echo
:
echo '<img class="gallerytype" title="';
echo $title;
echo '" alt="';
echo $alt; echo '" data-rsTmb="';
echo $littleimageUrl[0];
echo '" src="';
echo $bigimageUrl[0]; echo '"/> ';
您可以使用逗号(
,
)来分隔要输出的表达式:
echo '<img class="gallerytype" title="', $title, '" alt="', ..., '"/> ';
这应该已经可以帮助您使代码更具可读性了。
然后如果
$alt
为空,则要将其设置为$title
。所以在输出之前这样做:
empty($alt) && $alt = $title;
读作:
$alt
为空,$alt
为$title
。
你也可以用
if
子句来写:
if (empty($alt)) $alt = $title;
这应该适合你。
如果你只想在没有alt属性时添加alt属性,你可以使用这个:
`add_filter( 'wp_get_attachment_image_attributes', function( $atts ) {
if ( empty( $atts['alt'] ) ) {
$atts['alt'] = the_title_attribute( 'echo=0' );
}
return $atts;
} );`