【问题标题】:Height of div based on Advanced Custom Fields date entries基于高级自定义字段日期条目的 div 高度
【发布时间】:2017-06-20 23:16:22
【问题描述】:

我正在使用高级自定义字段在 Wordpress 中构建时间线页面。我有一个活动开始日期和结束日期,我需要根据活动的持续时间调整 div 的高度。

我到目前为止的代码如下。 <div class="span"></div> 是需要高度的 div。我需要的高度比的估计值约为每 30.5 天 100 像素。开始/结束日期的字段名称为timeline_datespan_starttimeline_datespan_end,字段类型为日期选择器。

<?php 
  $custom_args = array(
      'post_type'       => 'timeline',
      'post_status'     => 'publish',
      'posts_per_page'  => -1,
      'meta_key'        => 'timeline_date',
      'orderby'         => 'meta_value_num',
      'order'           => 'ASC'
    );

  $custom_query = new WP_Query( $custom_args ); ?>

<?php if ( $custom_query->have_posts() ) : ?>

<!-- the loop -->
<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>

    <!-- event span -->
    <?php 
        $timeline_span = get_field('timeline_datespan_start');
        if( !empty($timeline_span) ): ?>
        <div class="event <?php the_field('timeline_datespan_start'); ?>">
            <div class="timeline-event-span">
                <div class="span"></div><div class="line"></div>
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span class="timeline-date">(<?php the_field('timeline_datespan_start'); ?> - <?php the_field('timeline_datespan_end'); ?>)</span>
            </div>
        </div>
    <?php endif; ?>
    <!-- /event span -->

    <?php // endif; ?>
<?php endwhile; ?>
<!-- end of the loop -->

<?php wp_reset_postdata(); ?>

<?php else:  ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

【问题讨论】:

    标签: javascript php wordpress height advanced-custom-fields


    【解决方案1】:

    试试这个:

      $startDate = the_field('timeline_datespan_start');
      $endDate   = the_field('timeline_datespan_end');
    
      $datetime1 = date_create($startDate);
      $datetime2 = date_create($endDate);
    
      $dDiff = $datetime1->diff($datetime2);
      $height = ($dDiff->days) / 0.305;
    

    【讨论】:

    • 谢谢,但是当我回显 $height 时,我得到的值是 0。
    • 什么返回the_field('timeline_datespan_start')? - 它返回有效日期?当我使用前。 $datetime1 = date_create('01.07.2017');$datetime2 = date_create('10.08.2017'); 效果很好。
    • 原谅我,我的 php 技术很糟糕。可能是因为我的日期格式是 Y-m-d 造成的?
    • 当日期是前任时,它对我来说很好。 2017-08-10
    • 可能是我实现错了?同样,我不太擅长 php... 我将您建议的代码直接放在 &lt;?php while ( $custom_query-&gt;have_posts() ) : $custom_query-&gt;the_post(); ?&gt; 之后并将 div 编辑为:&lt;div class="span" style="height: &lt;?php echo $height ?&gt;px;"&gt;&lt;/div&gt;
    【解决方案2】:

    非常感谢您为我指明了正确的方向。 这就是它对我有用的原因:

    <?php 
        $startdate = get_field('timeline_datespan_start', false, false);
        $enddate = get_field('timeline_datespan_end', false, false);
    
        $startdate = new DateTime($startdate);
        $enddate = new DateTime($enddate);
    
        $dDiff = $startdate->diff($enddate);
        $height = ($dDiff->days) / 0.305;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2016-06-10
      相关资源
      最近更新 更多