Custom Post Type Loop выдает ошибку 500 при использовании в виджетах

Я пытаюсь добавить пользовательский контур пользовательского типа в виджет.

Все здесь работало правильно, пока я не добавил цикл к функции our_team_section_after() .

Однако я не могу найти никаких синтаксических ошибок. Всякий раз, когда я добавляю цикл, я получаю ошибку внутреннего сервера 500. Когда я возвращаю его, он работает нормально.

Я использую Genesis Framework, поэтому некоторые из них являются эксклюзивными.

Я действительно искал в Интернете ответ, и мне не повезло. Любая помощь будет оценена!

 <?php //Register the widget areas genesis_register_sidebar( array( 'id' => 'landing-section', 'name' => __( 'Landing Section', 'genesis' ), 'description' => __( 'First Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'who-we-are-section', 'name' => __( 'Who We Are Section', 'genesis' ), 'description' => __( 'Who We Are Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'creative-process-section', 'name' => __( 'Creative Process Section', 'genesis' ), 'description' => __( 'Creative Process Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'services-section', 'name' => __( 'Services Section', 'genesis' ), 'description' => __( 'Services Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'our-team-section', 'name' => __( 'Our Team Section', 'genesis' ), 'description' => __( 'Our Team Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'case-studies-section', 'name' => __( 'Case Studies Section', 'genesis' ), 'description' => __( 'Case Studies Homepage Section.', 'Bootstrap Genesis' ), ) ); genesis_register_sidebar( array( 'id' => 'worked-with-section', 'name' => __( 'Who We\'ve Worked With', 'genesis' ), 'description' => __( 'Who We\'ve Worked With Homepage Section.', 'Bootstrap Genesis' ), ) ); //* Add the page widget in the content - XHTML add_action( 'genesis_before_loop', 'front_page_content' ); function front_page_content() { if ( is_front_page() ){ genesis_widget_area ('landing-section', array( 'before' => '<div id="landing-section"><div class="container">', 'after' => '</div></div>', ) ); genesis_widget_area ('who-we-are-section', array( 'before' => '<div id="who-we-are-section"><div class="container">', 'after' => '</div></div>', ) ); genesis_widget_area ('creative-process-section', array( 'before' => '<div id="creative-process-section"><div class="container">', 'after' => '</div></div>', ) ); genesis_widget_area ('services-section', array( 'before' => '<div id="services-section"><div class="container">', 'after' => '</div></div>', ) ); genesis_widget_area ('our-team-section', array( 'before' => our_team_section_before(), 'after' => our_team_section_after(), ) ); genesis_widget_area ('case-studies-section', array( 'before' => '<div id="case-studies-section"><div class="container">', 'after' => '</div></div>', ) ); genesis_widget_area ('worked-with-section', array( 'before' => '<div id="worked-with-section"><div class="container">', 'after' => '</div></div>', ) ); } } function our_team_section_before() { $before = '<div id="our-team-section">'; $before .= '<div class="container">'; return $before; } function our_team_section_after() { $after = '</div>'; $after .= '<div class="container-fluid">'; $after .= '<div class="row">'; $after .= '<div class="col-lg-9 col-sm-8 col-xs-12">'; $after .= '<div class="owl-carousel">'; $args = array( 'post_type' => 'team_post_type' ); $query = new WP_Query($args); if( $query -> have_posts() ){ $query -> while( have_posts() ){ $query -> the_post(); $after .= '<div>'; $after .= the_post_thumbnail(); $after .= '</div>'; } wp_reset_postdata(); } $after .= '</div>'; $after .= '</div>'; $after .= '<div class="col-lg-3 col-sm-4 col-xs-12">'; $after .= '<div class="homepage-cta">'; $after .= '<span>See Entire Team &gt;</span>'; $after .= '</div>'; $after .= '</div>'; $after .= '</div>'; $after .= '</div>'; $after .= '</div>'; return $after; } 

Solutions Collecting From Web of "Custom Post Type Loop выдает ошибку 500 при использовании в виджетах"

В вашем предоставленном коде есть несколько проблем.

$query -> while( have_posts() )

Тип WP_Query() – это объект. Вы имеете в виду метод, который не существует. Вместо этого вы должны использовать следующее:

 while( $query->have_posts() ) {...} 

wp_reset_postdata(); внутри условного

Эта функция сбрасывает данные записи, как она и предлагает. Если вы используете его внутри условного выражения, и условие не выполняется, данные вашего сообщения не будут сброшены, оставив пустой запрос активным. Таким образом, вы должны использовать его вне условного или перед return , если вместо этого вы возвращаете данные.

the_... вместо get_the_...

Если вы хотите сохранить данные в переменной, вы должны использовать функцию, которая возвращает данные, а не эхо. the_post_thumbanil() повторяет эскиз, в то время как вам нужно вернуть его. Таким образом, вы должны использовать get_the_post_thumbnail() . Это относится к каждой функции WordPress, которая начинается с the_... , насколько я знаю.