首页 文章

如何在编辑期间填充wp-admin / post.php文件?

提问于
浏览
0

在wp-admin的post.php页面中,我喜欢在页面加载时填充post meta . 为此我尝试了以下内容

add_action('load-post.php', 'show_buy_ticket_date');

function show_buy_ticket_date() {
    $screen = get_current_screen();

    if ($screen->post_type === 'ai1ec_event') {
        $post_id = filter_input(INPUT_GET, 'post');
        $buy_ticket_date_unix_timestamp = get_post_meta($post_id,
                'buy_ticket_date', TRUE);
    }

}

在这里我获取了帖子的元值 . 但是一旦加载编辑页面/加载之前,我如何在表单中的一个字段中填充它 .

对于例如这个领域看起来像这样

<input class="ai1ec-date-input ai1ec-form-control datepicker hasDatepicker" name="ai1ec_admin_buy_ticket-date-input" id="ai1ec_admin_buy_ticket-date-input" type="date">

1 回答

  • 1

    您需要将时间戳转换为适合 input 的日期值,并考虑到,如果时间戳是UTC时间,您可能希望将其与当前时区对齐 .

    最后,使用 value 属性将日期值传递给 input

    date_default_timezone_set( 'Europe/Helsinki' );
    $buy_ticket_date = date( 'Y-n-j', intval( $buy_ticket_date_unix_timestamp ));
    
    <input
        class="ai1ec-date-input ai1ec-form-control datepicker hasDatepicker"
        name="ai1ec_admin_buy_ticket-date-input"
        id="ai1ec_admin_buy_ticket-date-input"
        type="date" ,
        value="<?php echo $buy_ticket_date; ?>
    >
    

    UPDATE

    鉴于 input 在某些第三方代码中的限制,我将通过JavaScript更新该字段:

    传递 $buy_ticket_datelocalized JavaScript,PHP:

    add_action( 'wp_enqueue_scripts', 'my_scripts' ) );
    function my_scripts() {
    
        // ... get $buy_ticket_date_unix_timestamp based on post ID
        date_default_timezone_set( 'Europe/Helsinki' );
        $buy_ticket_date = date( 'Y-n-j', intval( $buy_ticket_date_unix_timestamp ));
    
        wp_register_script( 'my_script', MY_PLUGIN_URL . 'js/script.js', array( 'jquery' ) );
        wp_localize_script( 'my_script', 'buy_ticket_date', $buy_ticket_date );
        wp_enqueue_script( 'my_script' );
    }
    

    和JavaScript( script.js ):

    /*global document, jQuery */
    (function ($) {
        'use strict';
    
        $(document).ready(function () {
            $('#ai1ec_admin_buy_ticket-date-input').val(buy_ticket_date);
        });
    }(jQuery));
    

相关问题