在循环

时间:2018-02-13 10:03:40

标签: php wordpress loops custom-post-type

我在网站上有自定义帖子类型,并且我想在没有该帖子类型的任何项目时显示消息。

我已经修改了PHP并查看了一些教程,但是教程中的语法与我正在使用的语法略有不同,所以我无法让它工作。

这是我到目前为止所做的:

<section class="bigsection clearfix" id="joinus">

  <h2><?php echo(types_render_field( 'job-section-header', array( ) )); ?></h2>
  <p class="bodycopy"><?php echo(types_render_field( 'job-section-text', array( ) )); ?></p>
  <div class="jobs">
  <?php

        // WP_Query arguments
        $args = array (
            'post_type'     => array( 'job' ),
            'nopaging'      => true,
            'orderby'       => 'menu_order',
            'order'         => 'ASC'
        );

        $jobs = new WP_Query( $args );

        if ( $jobs->have_posts() ) {


            while ( $jobs->have_posts() ) {
                $jobs->the_post();
                            ?>

      <div class="single-job">
      <h3><?php the_title( ); ?></h3>
      <p><a href="<?php echo(types_render_field( 'link-to-job-description', array('output' => 'raw' ) )); ?>">Job Specification</a></p>
      </div>
  </div>
endwhile;
}
else {
            <p>There are no current vacancies at this time</p>
          }
        ?>
<?php
            }

        }

        // Restore original Post Data
        wp_reset_postdata();

        ?>

</section>

代码显然在技术上是正确的(即没有语法错误),但是当它正确显示可用的作业时,当没有任何可用作业时,它没有显示“此时没有当前空缺”消息。

任何帮助将不胜感激!

谢谢:)

1 个答案:

答案 0 :(得分:0)

你有太多的括号,而你的最终版本没有<?php标签才能使其正常工作。你“.jobs”div也需要处于if状态。最好在结束之后添加wp_reset_postdata();,而不是在所有条件之后,因为如果你没有输入if条件,则不需要使用wp_reset_postdata();。并删除所有括号,因为当你有很多html时,你无法轻易看到它们。

<section class="bigsection clearfix" id="joinus">

  <h2><?php echo(types_render_field( 'job-section-header', array( ) )); ?></h2>
  <p class="bodycopy"><?php echo(types_render_field( 'job-section-text', array( ) )); ?></p>
  <?php

    // WP_Query arguments
    $args = array (
        'post_type'     => array( 'job' ),
        'nopaging'      => true,
        'orderby'       => 'menu_order',
        'order'         => 'ASC'
    );

    $jobs = new WP_Query( $args );

    if ( $jobs->have_posts() ) : ?>

      <div class="jobs">
        <?php while ( $jobs->have_posts() ) : $jobs->the_post();?>

            <div class="single-job">
                <h3><?php the_title( ); ?></h3>
                <p><a href="<?php echo(types_render_field( 'link-to-job-description', array('output' => 'raw' ) )); ?>">Job Specification</a></p>
            </div>

        <?php endwhile; wp_reset_postdata();?>
      </div>
    <?php else : ?>
        <p>There are no current vacancies at this time</p>
    <?php endif; ?>


</section>