Приветствую.
Взял за пример один плагин и ковыряюсь, но не могу понять один момент.
Все работает как надо, но шорткод затягивает к себе начало статьи и низ, то есть все что выше и ниже контента.
Код длинный, но я его приведу и возможно в нем косяк, который я не вижу, так как уже сам вывод переделал, а остальное замылилось. Как можно такого избежать, что бы не только контент, но и все остальное в него не попадало?
add_shortcode('hrf_faqs', 'fn_hrf_faqs');
function fn_hrf_faqs($attr)
{
if (!(is_amp_endpoint())) {
$is_new_install_hrf = get_option('hrf_installed_status');
$faq_params = shortcode_atts( array(
'category' => '',
'title' => '',
), $attr );
$html = '<div class="hrf-faq-list" itemscope itemtype="https://schema.org/FAQPage">';
$is_faq = true;
if( $faq_params['title'] != ''){
$html .= '<strong class="frq-main-title">'.$faq_params['title'].'</strong>';
}
$head_tag = get_option('hrf_question_headingtype','h3');
$faq_args = array(
'post_type' => 'hrf_faq',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
);
if( $faq_params['category'] != '' ){
$faq_args['category_name'] = $faq_params['category'];
}
$faq_query = new WP_Query( $faq_args );
if( $faq_query->have_posts() ):
while( $faq_query->have_posts() ):
$faq_query->the_post();
$html .= '<div data-block="accordion" class="hrf-entry" id="hrf-entry-'.$faq_query->post->ID.'" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<div data-block="item" data-title="'.get_the_title().'">
<'.$head_tag.' class="hrf-title close-faq" data-content-id="hrf-content-'.$faq_query->post->ID.'" itemprop="name"><span></span><hr><small>'.get_the_title().'</small><hr></'.$head_tag.'>
<div class="hrf-content" id="hrf-content-'.$faq_query->post->ID.'" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div itemprop="text">'.apply_filters( 'the_content', get_the_content() ).'</div></div>
</div></div>';
if ( $is_new_install_hrf == 'new') {
$endofhtml = '</div>';
}else { $endofhtml = '</div>';}
endwhile;
else:
$html .= "No FAQs Found";
$endofhtml = '</div>';
endif;
wp_reset_query();
$html .= $endofhtml;
return $html;
}
}Наверняка туплю и есть простое решение, но не вижу.
Привет Игорь.
garry сказал(а)
но шорткод затягивает к себе начало статьи и низ, то есть все что выше и ниже контента.
- визуально покажи. Я не понял что значит.
Верстка точно верная? дивы где надо выводятся и закрываются?
А может дело в фильтре apply_filters( 'the_content' что у тебя внутри инициализируется - висит на нем что-то где-то извне и влияет
Дружаев Владимир (Otshelnik-Fm) сказал(а)
Можно вообще выкинуть данный apply_filters и прогнать контент только через wpautop и convert_smilies - в принципе что еще нужно? Переносы и смайлы - я так делал у себя
Да, ты прав, затея не оправдывает геморой...так и сделаю по твоему совету. Спасибо еще раз.