带有生日的自定义配置文件字段。<SELECT>的问题

时间:2013-07-16 作者:okonik

我为生日数据定制了个人资料字段。

        function my_user_field( $user ) {
            $birthday_day = esc_attr( get_the_author_meta( \'birthday_day\', $user->ID ) );
            $birthday_month = esc_attr( get_the_author_meta( \'birthday_month\', $user->ID ) );
            $birthday_year = esc_attr( get_the_author_meta( \'birthday_year\', $user->ID ) );
        ?>

            <h3><?php _e(\'More About You\'); ?></h3>
            <table class="form-table">                   
                <tr>
                    <th>
                        <label for="birthday"><?php _e(\'Birthday\'); ?>
                    </label></th>
                    <td>
                      <span class="description"><?php _e(\'When is your birthday?\'); ?></span><br>
                        <form action="">
                        <select name="birthday_day" id="birthday_day">
                            <?php
                            for ($i=1; $i<=31; $i++)
                            {
                                echo \'<option value="\';
                                echo $i;
                                echo \'"\';
                                 if ($birthday_day == $i ) { 
                                     echo \'selected\';
                                    }
                                echo\' >\';
                                echo $i;
                                echo\'</option>\';
                            };
                            ?>
                        </select>
                        <select name="birthday_month" id="birthday_month" onchange="updateDays();">
                            <option value="1" <?php if ($birthday_month == \'1\') { ?>selected<?php }?> >January</option>
                            <option value="2" <?php if ($birthday_month == \'2\' ) { ?>selected<?php }?> >February</option>
                            <option value="3" <?php if ($birthday_month == \'3\' ) { ?>selected<?php }?> >March</option>
                            <option value="4" <?php if ($birthday_month == \'4\' ) { ?>selected<?php }?> >April</option>
                            <option value="5" <?php if ($birthday_month == \'5\' ) { ?>selected<?php }?> >May</option>
                            <option value="6" <?php if ($birthday_month == \'6\' ) { ?>selected<?php }?> >June</option>
                            <option value="7" <?php if ($birthday_month == \'7\' ) { ?>selected<?php }?> >July</option>
                            <option value="8" <?php if ($birthday_month == \'8\' ) { ?>selected<?php }?> >August</option>
                            <option value="9" <?php if ($birthday_month == \'9\' ) { ?>selected<?php }?> >September</option>
                            <option value="10" <?php if ($birthday_month == \'10\' ) { ?>selected<?php }?> >October</option>
                            <option value="11" <?php if ($birthday_month == \'11\' ) { ?>selected<?php }?> >November</option>
                            <option value="12" <?php if ($birthday_month == \'12\' ) { ?>selected<?php }?>>December</option>
                        </select>
                        <select name="birthday_year" id="birthday_year" onchange="updateDays();">
                            <?php 
                            for ($i=2010; $i>1930; $i--)
                            {
                                echo \'<option value="\';
                                echo $i;
                                echo \'"\';
                                 if ($birthday_year == $i ) { 
                                     echo \'selected\';
                                    }
                                echo\' >\';
                                echo $i;
                                echo\'</option>\';
                            };
                             ?>
                        </select>

        </form>
                    </td>
                </tr>

            </table>
        <?php 
        }


        function my_save_custom_user_profile_fields( $user_id ) {
            if ( !current_user_can( \'edit_user\', $user_id ) )
                return FALSE;

            update_usermeta( $user_id, \'birthday_day\', $_POST[\'birthday_day\'] );
            update_usermeta( $user_id, \'birthday_month\', $_POST[\'birthday_month\'] );
            update_usermeta( $user_id, \'birthday_year\', $_POST[\'birthday_year\'] );  
        }

        add_action( \'show_user_profile\', \'my_user_field\' );
        add_action( \'edit_user_profile\', \'my_user_field\' );
        add_action( \'personal_options_update\', \'my_save_custom_user_profile_fields\' );
        add_action( \'edit_user_profile_update\', \'my_save_custom_user_profile_fields\' );
它通常保存到db,但有一个失败。我可以选择例如“2月31日”,这很糟糕。如何对这些进行验证?我想如果用户选择“2月31日”并提交表单,则其日期将保存为“2月28日”,但如果选择的年份是闰年,则保存为“2月29日”。

我知道可以使用javascript制作更灵活的表单,但如何使用PHP实现呢?

1 个回复
SO网友:helenhousandi

这似乎不是一个WP问题,但:就PHP而言,您要寻找的函数是checkdate(). 也就是说,你真的应该also 为用户在客户端(即JS)执行一些操作。

结束

相关推荐

存档.php中的2个循环(每个类别一个)

我为我正在构建的网站上的新闻博客设置了一个自定义帖子类型,自定义帖子类型为blog 由2类组成,blog-image-post ID号=3 和blog-text-post ID号=4. 我想分别循环每个类别,因为每个类别在归档中的显示和样式略有不同。我目前有: <div id=\"blog-grid\"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>