如果未设置属性,则隐藏短代码的特定部分

时间:2019-06-10 09:08:38

标签: wordpress shortcode

我创建了以下短代码来显示块引用:

// 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> 

如果未在简码中设置authorauthor_job也是如此。

我该如何实现?

2 个答案:

答案 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' );