在wp的post.php页面中,我喜欢在加载页面时填充post元。为此,我尝试了以下方法
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);
}
}在这里,我获取了post的元值。但是,在加载/加载之前,如何在表单中的某个字段中填充它。
例如,该字段如下所示
<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">发布于 2016-10-20 16:56:42
您需要将时间戳转换为适合于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传递局部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));https://stackoverflow.com/questions/40156562
复制相似问题