Приветствую.
Взял за пример один плагин и ковыряюсь, но не могу понять один момент.
Все работает как надо, но шорткод затягивает к себе начало статьи и низ, то есть все что выше и ниже контента.
Код длинный, но я его приведу и возможно в нем косяк, который я не вижу, так как уже сам вывод переделал, а остальное замылилось. Как можно такого избежать, что бы не только контент, но и все остальное в него не попадало?
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 - в принципе что еще нужно? Переносы и смайлы - я так делал у себя
Да, ты прав, затея не оправдывает геморой...так и сделаю по твоему совету. Спасибо еще раз.