【发布时间】:2018-01-31 13:48:48
【问题描述】:
我正在使用 WordPress 网站,并希望将照片说明和照片信用额度集成到已制作的图像下。我发现了一个很棒的代码,可以在媒体上传页面中添加一个摄影师信用和 URL 字段。但是,在页面中显示后,我想进一步自定义它。
目前,当我上传照片时,我可以添加摄影师姓名和摄影师(或来源)网址。如果填写,该 URL 会自动链接到名称。但是,我想做的是在摄影师姓名前添加一个文本和图标,以显示“(图标)图片来源 /”
我可以使用 css 添加它,但是,当没有摄影师姓名时,它仍然显示 Image Credit 文本和图标,但没有名称。当摄影师姓名字段中没有值时,如何隐藏它?
另外,如果我输入摄影师姓名,但没有 URL,它会将姓名链接到空 URL。如果 URL 字段为空,我怎样才能使它不链接名称?
这是我正在使用的代码:
function be_attachment_field_credit( $form_fields, $post ) {
$form_fields['be-photographer-name'] = array(
'label' => 'Photographer Name',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_name', true ),
'helps' => 'If provided, photo credit will be displayed',
);
$form_fields['be-photographer-url'] = array(
'label' => 'Photographer URL',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_url', true ),
'helps' => 'Add Photographer URL',
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 );
/**
* Save values of Photographer Name and URL in media uploader
*
* @param $post array, the post data for database
* @param $attachment array, attachment fields from $_POST form
* @return $post array, modified post data
*/
function be_attachment_field_credit_save( $post, $attachment ) {
if( isset( $attachment['be-photographer-name'] ) )
update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] );
if( isset( $attachment['be-photographer-url'] ) )
update_post_meta( $post['ID'], 'be_photographer_url', esc_url( $attachment['be-photographer-url'] ) );
return $post;
}
add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 );
然后在我的 single.php 文件中添加以下代码来显示照片来源。
<div id="tgg_credit_line" class="tgg-photo-credit" align="right">
<?php echo "📷 Image Credit / " ?><a href="<?php echo get_post_meta(get_post_thumbnail_id(), 'be_photographer_url', true); ?>"><?php echo get_post_meta(get_post_thumbnail_id(), 'be_photographer_name', true); ?></a>
</div>
【问题讨论】: