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

时间:2016-10-20 13:57:19

标签: wordpress

在wp-admin的post.php页面中,我喜欢在页面加载时填充帖子元。为此,我尝试了以下

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 个答案:

答案 0 :(得分:1)

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

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

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; ?>
>

<强>更新

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

$buy_ticket_date传递给localized 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));