将定制类分配给循环内的div

时间:2019-11-16 作者:sialfa

我在用这个nice effect 替换作为自定义主题一部分的滑块。我需要一种方法来实现自定义css类div 这将在wordpress循环中,我想使用我已经注册的自定义帖子类型将图像动态地放入<img src=""> 标签,在旧版本的代码中,我使用的是alstothis plugin 要仅为移动设备添加次要功能图像,请使用get_posts() 有关更多信息,请参阅链接,而不是标准循环。我如何才能做到这一点?

这是我目前正在使用的没有循环的代码:


<div class="jumbotron jumbotron-fluid bg-scroll">
  <div class="container-fluid">
    <div class="row">

      <div class="col-sm-12 col-md-12 col-lg-12 img-top"> <!-- custom class -->
        <div class="row">
          <div class="col-sm-12 col-md-12 col-lg-12 img-text">
            <h1 class="">Hello</h1>
            <p class="lead">World.</p>
          </div>
        </div>
        <img class="img-fluid bg-img" src="image link here">
      </div>

      <div class="col-sm-12 col-md-12 col-lg-12 img-middle"> <!-- custom class -->
        <div class="row">
          <div class="col-sm-12 col-md-12 col-lg-12 img-text">
            <h1 class="">Lorem ipsum</h1>
            <p class="lead">docet.</p>
          </div>
        </div>
        <img class="img-fluid bg-img" src="image link here...">
      </div>

    </div>
  </div>
</div>

正如您所看到的,为了达到这样的效果,我需要为引导列分配一个不同的类img-topimg-middle. 使用循环将无法实现这一点,我希望避免在php文件中硬编码图像。

1 个回复
SO网友:Antti Koskinen

这里有一个例子,你可以为你的巨型机器人编写循环,

// add helper functions to functions.php
function my_posts_query() {
  $args = array(); // add parameters as needed post_type, posts_per_page, etc.
  return new WP_Query($args);
}

function my_single_post_image( int $post_id ) {
  $url = get_the_post_thumbnail_url( $post_id, \'large\' ); // update as needed
  if ( $url ) {
    printf(
      \'<img class="img-fluid bg-img" src="%s">\',
      esc_url( $post_id );
    );
  }
}

function my_single_post( WP_Post $post, string $extra_class ) {
  ?>
  <div class="col-sm-12 col-md-12 col-lg-12 <?php echo esc_attr( $extra_class ); ?>">
    <div class="row">
      <div class="col-sm-12 col-md-12 col-lg-12 img-text">
        <h1 class=""><?php echo esc_html( $post->post_title ); ?></h1>
        <p class="lead"><?php echo esc_html( $post->post_excerpt ); ?></p>
      </div>
    </div>
    <?php my_single_post_image( $post->ID ); ?>
  </div>
  <?php
}

function position_class_name( int $total, int $count ) {
  if ( 0 === $count ) {
    return \'img-top\';
  } else if ( $total === $count ) {
    return \'img-bottom\';
  } else { // add more logic, if needed
    return \'img-middle\';
  }
}

// in template file
$query = my_posts_query();
if ( $query->posts ) {
  ?>
  <div class="jumbotron jumbotron-fluid bg-scroll">
    <div class="container-fluid">
      <div class="row">
        <?php
          foreach ( $query->posts as $i => $my_post ) {
            my_single_post( $my_post, position_class_name( $query->found_posts, $i ) );
          }
        ?>
      </div>
    </div>
  </div>
  <?php
}
您还可以考虑的另一件事是,您可以使用更通用的方法:nth-child(n) css和jQuery中的选择器。E、 g。

// styles.css
.jumbotron .row > div {
  // css
}
.jumbotron .row > div:first-child {
  // css
}
.jumbotron .row > div:last-child {
  // css
}
.jumbotron .row > div:nth-child(n) {
  // css
}

// scripts.js
var myElement = $( ".jumbotron .row > div:nth-child(1)" );