Wordpress 自定义 post 在短代码中键入循环

Wordpress custom post type loop inside a shortcode

我想创建一个短代码,它将显示 CPT = 推荐的循环。我准备了这样的代码:

function testimonials_loop_shortcode() {
        $args = array(
            'post_type' => 'testimonials',
            'post_status' => 'publish',
        );

        $my_query = null;
        $my_query = new WP_query($args);
        while ($my_query->have_posts()) : $my_query->the_post();

        $custom = get_post_custom( get_the_ID() );

        ?><p><?php the_title();?></p><?php
        ?><p>the_content();</p><?php

    wp_reset_postdata();
    else :
    _e( 'Sorry, no posts matched your criteria.' );
    endif;
}

add_shortcode( 'testimonials_loop', 'testimonials_loop_shortcode' );

准备粘贴到functions.php里面。但是代码破坏了网站/错误 500。我做错了什么?

我查看了您的代码,有许多问题需要解决。以下是修复列表:

  1. 您没有打开if条件,而是用endif关闭它。
  2. 您打开了 while 循环,但没有关闭它。
  3. 您没有在 the_content() 函数周围放置 <?php ?> 标签。

因此,我修改了您的代码,请在下面找到更新后的代码:

function testimonials_loop_shortcode() {
    $args = array(
        'post_type' => 'testimonials',
        'post_status' => 'publish',
    );

    $my_query = null;
    $my_query = new WP_query($args);
    if($my_query->have_posts()):
        while($my_query->have_posts()) : $my_query->the_post();
            $custom = get_post_custom( get_the_ID() );
            echo "<p>".get_the_title()."</p>";
            echo "<p>".get_the_content()."</p>";
        endwhile;
        wp_reset_postdata();
    else :
    _e( 'Sorry, no posts matched your criteria.' );
    endif;
}

add_shortcode( 'testimonials_loop', 'testimonials_loop_shortcode' );

希望对您有所帮助。

如有任何疑问,请随时联系。谢谢