我创建了以下短代码来显示块引用:
// Add Shortcode
function quote_shortcode( $atts , $content = null ) {
// Attributes
$atts = shortcode_atts(
array(
'author' => 'author',
'author_job' => 'author_job',
),
$atts
);
return
'<div data-module="expert_quote"><blockquote class="full no-picture"><p>“' . $content . '”</p><footer class="quote-footer"><cite><span class="name">' . esc_attr($atts['author']) . '</span> <span class="title">' . esc_attr($atts['author_job']) . '</span></cite></footer></blockquote></div>';
}
add_shortcode( 'quote', 'quote_shortcode' );
我不想回来
<span class="name">' . esc_attr($atts['author']) . '</span>
如果未在简码中设置author
。 author_job
也是如此。
我该如何实现?
答案 0 :(得分:1)
您需要有条件地创建返回字符串。您可以使用以下代码:
function quote_shortcode( $atts , $content = null ) {
// Attributes
$atts = shortcode_atts(
array(
'author' => 'author',
'author_job' => 'author_job',
),
$atts
);
$return_string = '<div data-module="expert_quote">';
$return_string .= '<blockquote class="full no-picture">';
$return_string .= '<p>“' . $content . '”</p>';
$return_string .= '<footer class="quote-footer">';
$return_string .= '<cite>';
if (isset($atts['author'])) {
$return_string .= '<span class="name">' . esc_attr($atts['author']) . '</span>';
}
if (isset($atts['author_job'])) {
$return_string .= '<span class="title">' . esc_attr($atts['author_job']) . '</span>';
}
$return_string .= '</cite>';
$return_string .= '</footer">';
$return_string .= '</blockquote">';
$return_string .= '</div">';
return $return_string;
}
add_shortcode( 'quote', 'quote_shortcode' );
答案 1 :(得分:0)
我设法使其正常工作,但不确定我的代码是否经过优化:
function quote_shortcode( $atts , $content = null ) {
// Attributes
$atts = shortcode_atts(
array(
'author' => '',
'author_job' => '',
),
$atts
);
$return_string = '<div data-module="expert_quote">';
$return_string .= '<blockquote class="full no-picture">';
$return_string .= '<p>“' . $content . '”</p>';
if (!empty($atts['author']) || !empty($atts['author_job'])) {
$return_string .= '<footer class="quote-footer">';
$return_string .= '<cite>';
}
if (!empty($atts['author'])) {
$return_string .= '<span class="name">' . esc_attr($atts['author']) . '</span>';
}
if (!empty($atts['author_job'])) {
$return_string .= '<span class="title">' . esc_attr($atts['author_job']) . '</span>';
}
if (!empty($atts['author']) && !empty($atts['author_job'])) {
$return_string .= '</cite>';
$return_string .= '</footer>';
}
$return_string .= '</blockquote>';
$return_string .= '</div>';
return $return_string;
}
add_shortcode( 'quote', 'quote_shortcode' );