Вопросы и ответы – кастомизируем вывод

Expert Review

В плагине Expert Review есть фильтры, которые можно использовать для того, чтоб изменить разметку блоков под свои нужды. Например, если хочется добавить тэги h2, h3  в вопросы и ответы. Для этого надо установить плагин Pro Functions и добавить в него подобный код:

$out_before = '';
add_filter( 'expert_review:before_qa', function ( $out ) use ( &$out_before ) {
    $out_before = $out;

    return $out;
} );
add_filter( 'expert_review:after_qa', function ( $out, $atts ) use ( $out_before ) {
    $expert_link   = apply_filters( 'expert_review:expert_link', $atts['expert_link'], $atts );
    $expert_avatar = '';
    if ( $atts['expert_avatar'] ) {
        $avatar_alt    = ! empty( $atts['expert_avatar_alt'] ) ? $atts['expert_avatar_alt'] : $atts['expert_name'];
        $expert_avatar = '<img src="' . $atts['expert_avatar'] . '" alt="' . esc_attr( $avatar_alt ) . '">';
        if ( $expert_link ) {
            $expert_avatar = '<a href="' . $expert_link . '" target="_blank">' . $expert_avatar . '</a>';
        }
    }
    $expert_avatar = apply_filters( 'expert_review:expert_avatar', $expert_avatar, $atts );

    $out = $out_before;
    $out .= '<div class="expert-review-qa">';

    if ( ! empty( $atts['qa_title'] ) && $atts['qa_show_title'] == 1 ) {
        $out .= '<div class="expert-review-qa-header">' . $atts['qa_title'] . '</div>';
    }

    // здесь мы можем поменять код разметки под свои задачи
    foreach ( $atts['qa'] as $qa ) {
        $q = nl2br( $qa['q'] );
        $a = nl2br( $qa['a'] );

        $q = apply_filters( 'expert_review_qa:question', $q, $atts );
        $a = apply_filters( 'expert_review_qa:answer', $a, $atts );

        do_action( 'expert_review_questions_and_answers', [ $q, $a ] );

        $out .= '<div class="expert-review-qa-container">';
        $out .= '  <div class="expert-review-qa__question"><h2>' . $q . '</h2></div>';
        $out .= '  <div class="expert-review-qa__answer">';
        $out .= '    <div class="expert-review-qa__avatar">' . $expert_avatar . '</div>';
        $out .= '    <div class="expert-review-qa__text">' . $a . '</div>';
        $out .= '  </div>';
        $out .= '</div>';
    }

    $out .= '</div><!--.expert-review-qa-->';

    return $out;
}, 10, 2 );

Оцените статью
ExpertReviewPlugin.ru
Добавить комментарий