高级自定义字段参数字段过期

时间:2013-08-30 作者:Viktor Kovalenko

我正在为一个朋友开发一个小型在线课程网站,但却被ACF复读器领域所困扰!

以下是显示课程日期表的代码:

<?php 
$rows = get_field(\'dates\');
$i = 1;

if($rows) { ?>
    <table class="specs">
        <thead>
            <tr>
                <th colspan="5">Course Dates</th>
            </tr>
        </thead>
        </tbody>
            <?php                               
            foreach($rows as $row) { 
                echo \'<tr>\';
                echo \'<td>\' . $i . \'</td>\';
                echo \'<td>\' . $row[\'start_date\'] ;

                // Check, if "end_date" field is not empty
                if( $row[\'end_date\']) {
                    echo \' - \' . $row[\'end_date\'] . \'</td>\';
                } else {
                    echo \'</td>\';
                }

                echo \'<td>10am – 5pm</td>\';
                echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
                echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
                echo \'</tr>\';
                $i++;
            }; ?>
        </tbody>
    </table> 

<?php }
此代码输出一个漂亮的表:

OUTPUT

我唯一搞不懂的是怎么检查[\'start_date\'] sub\\u字段与当前日期相对应,并在循环中仅显示有效日期的课程。

因此,基本上,如果[start\\u date]sub\\u字段不再有效,我需要自动删除或从循环中排除整个表行!

是否有任何解决方法?

2 个回复
最合适的回答,由SO网友:SJT 整理而成

可能比strtotime, 如您所知,日期格式为date_create_from_format(). 类似于:

$course_start = date_create_from_format(\'dmY\',$row[\'start_date\']);
if ($course_start > date(\'dmY\')){
        echo \'<tr>\';
        echo \'<td>\' . $i . \'</td>\';
        echo \'<td>\' . $row[\'start_date\'] ;

        // Check, if "end_date" field is not empty
        if( $row[\'end_date\']) {
            echo \' - \' . $row[\'end_date\'] . \'</td>\';
        } else {
            echo \'</td>\';
        }

        echo \'<td>10am – 5pm</td>\';
        echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
        echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
        echo \'</tr>\';
        $i++;
    }

SO网友:s1lv3r

我想“无效”意味着它已经过去了?!然后您将搜索如下条件:

 if( strtotime($row[\'start_date\']) > time() ) { ....
在您的环境中:

    <?php                               
    foreach($rows as $row) { 
        if( strtotime($row[\'start_date\']) > time() ) {
            echo \'<tr>\';
            echo \'<td>\' . $i . \'</td>\';
            echo \'<td>\' . $row[\'start_date\'] ;

            // Check, if "end_date" field is not empty
            if( $row[\'end_date\']) {
                echo \' - \' . $row[\'end_date\'] . \'</td>\';
            } else {
                echo \'</td>\';
            }

            echo \'<td>10am – 5pm</td>\';
            echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
            echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
            echo \'</tr>\';
            $i++;
        }
    }; ?>
一般建议:但要小心strotime()。它可以挑剔什么样的日期格式起作用并提供意外的结果。在大多数情况下,最好将日期保存为数据库中的适当格式(即unix时间戳或sql日期字段)。

结束

相关推荐

高级自定义字段参数字段过期 - 小码农CODE - 行之有效找到问题解决它

高级自定义字段参数字段过期

时间:2013-08-30 作者:Viktor Kovalenko

我正在为一个朋友开发一个小型在线课程网站,但却被ACF复读器领域所困扰!

以下是显示课程日期表的代码:

<?php 
$rows = get_field(\'dates\');
$i = 1;

if($rows) { ?>
    <table class="specs">
        <thead>
            <tr>
                <th colspan="5">Course Dates</th>
            </tr>
        </thead>
        </tbody>
            <?php                               
            foreach($rows as $row) { 
                echo \'<tr>\';
                echo \'<td>\' . $i . \'</td>\';
                echo \'<td>\' . $row[\'start_date\'] ;

                // Check, if "end_date" field is not empty
                if( $row[\'end_date\']) {
                    echo \' - \' . $row[\'end_date\'] . \'</td>\';
                } else {
                    echo \'</td>\';
                }

                echo \'<td>10am – 5pm</td>\';
                echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
                echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
                echo \'</tr>\';
                $i++;
            }; ?>
        </tbody>
    </table> 

<?php }
此代码输出一个漂亮的表:

OUTPUT

我唯一搞不懂的是怎么检查[\'start_date\'] sub\\u字段与当前日期相对应,并在循环中仅显示有效日期的课程。

因此,基本上,如果[start\\u date]sub\\u字段不再有效,我需要自动删除或从循环中排除整个表行!

是否有任何解决方法?

2 个回复
最合适的回答,由SO网友:SJT 整理而成

可能比strtotime, 如您所知,日期格式为date_create_from_format(). 类似于:

$course_start = date_create_from_format(\'dmY\',$row[\'start_date\']);
if ($course_start > date(\'dmY\')){
        echo \'<tr>\';
        echo \'<td>\' . $i . \'</td>\';
        echo \'<td>\' . $row[\'start_date\'] ;

        // Check, if "end_date" field is not empty
        if( $row[\'end_date\']) {
            echo \' - \' . $row[\'end_date\'] . \'</td>\';
        } else {
            echo \'</td>\';
        }

        echo \'<td>10am – 5pm</td>\';
        echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
        echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
        echo \'</tr>\';
        $i++;
    }

SO网友:s1lv3r

我想“无效”意味着它已经过去了?!然后您将搜索如下条件:

 if( strtotime($row[\'start_date\']) > time() ) { ....
在您的环境中:

    <?php                               
    foreach($rows as $row) { 
        if( strtotime($row[\'start_date\']) > time() ) {
            echo \'<tr>\';
            echo \'<td>\' . $i . \'</td>\';
            echo \'<td>\' . $row[\'start_date\'] ;

            // Check, if "end_date" field is not empty
            if( $row[\'end_date\']) {
                echo \' - \' . $row[\'end_date\'] . \'</td>\';
            } else {
                echo \'</td>\';
            }

            echo \'<td>10am – 5pm</td>\';
            echo \'<td>£\' . $row[\'course_price\'] .\'</td>\';
            echo \'<td><a href="#" class="button orange">Book Now</a></td>\';
            echo \'</tr>\';
            $i++;
        }
    }; ?>
一般建议:但要小心strotime()。它可以挑剔什么样的日期格式起作用并提供意外的结果。在大多数情况下,最好将日期保存为数据库中的适当格式(即unix时间戳或sql日期字段)。

相关推荐