ウィジェットにカスタム投稿タイプのカスタムループを追加しようとしています。
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 ></span>';
$after .= '</div>';
$after .= '</div>';
$after .= '</div>';
$after .= '</div>';
$after .= '</div>';
return $after;
}
提供されたコードにはいくつか問題があります。
$query -> while( have_posts() )
WP_Query()
戻り値の型はobjectです。あなたは存在しない方法を参照しています。代わりに、次のものを使用してください。
while( $query->have_posts() ) {...}
wp_reset_postdata();
この関数は、それが示唆するように、投稿のデータをリセットします。条件付きで使用しても条件が実行されない場合、投稿のデータはリセットされず、空のクエリがアクティブになります。そのため、データを返す場合は、条件の外側、またはreturn
の前に使用する必要があります。
the_...
の代わりにget_the_...
データを変数に格納したい場合は、データをエコーするのではなく、データを返す関数を使用してください。 the_post_thumbanil()
はサムネイルをエコーしますが、それを返す必要があります。そのため、代わりにget_the_post_thumbnail()
を使用してください。私の知る限り、これはthe_...
で始まるすべてのWordPress関数に適用されます。