媒体库条目的“上载”日期字段为只读。是否有办法使其在上载中的附件详细信息窗口中可编辑。php?
我尝试了以下代码作为插件。看来我已经成功了一半。这给了我上传日期作为输入字段(好)。
然而,我可以看到,我并没有连接到正确的函数来实际将该值与其他post字段一起写回wp\\u posts。
那么:如何钩住输入字段,使其成为更新wp\\u帖子的对象的一部分?
function jch_attachment_fields_to_edit( $form_fields, $post ){
$post_date = $post->post_date;
$form_fields[\'post_date\'] = array(
\'value\' => $post_date ? $post_date : \'\',
\'label\' => __( \'Uploaded Date\' )
);
return $form_fields;
}
add_filter( \'attachment_fields_to_edit\', \'jch_attachment_fields_to_edit\', 10, 2 );
/**
* Update attachment metadata
*
* @param int $post_ID Attachment ID.
// this actually works, but only when the user clicks \'Edit more details\'
*/
function jch_edit_attachment( $attachment_id ){
$post_ID = $_REQUEST[\'post_ID\'];
if ( isset( $_REQUEST[\'attachments\'][$attachment_id][\'media_date\'] ) ) {
$media_date = $_REQUEST[\'attachments\'][$attachment_id][\'media_date\'];
$wpdb->query($wpdb->prepare("UPDATE $wpdb->posts SET post_date = %s WHERE ID = %s", $media_date, $post_ID));
}
}
add_action( \'edit_attachment\', \'jch_edit_attachment\' );
SO网友:brianjohnhanna
看起来你没有打电话来global $wpdb
在功能顶部,访问$wpdb
班然而,我不确定你是否真的在你的edit_attachment
回调。
您正在尝试访问\'media_date\'
属性,但看起来您实际上正在将输入的名称设置为\'post date\'
. 您还使用$post_id
而不是$attachment_id
在您的功能中。
这是你的代码清理,希望这对你有用。
function jch_attachment_fields_to_edit( $form_fields, $post ){
$post_date = $post->post_date;
$form_fields[\'post_date\'] = array(
\'value\' => $post_date ? $post_date : \'\',
\'label\' => __( \'Uploaded Date\' )
);
return $form_fields;
}
add_filter( \'attachment_fields_to_edit\', \'jch_attachment_fields_to_edit\', 10, 2 );
/**
* Update attachment metadata
*
* @param int $post_ID Attachment ID.
*/
function jch_edit_attachment( $attachment_id ){
if ( empty( $_REQUEST[\'attachments\'][$attachment_id][\'post_date\'] ) ) {
return;
}
$date = $_REQUEST[\'attachments\'][$attachment_id][\'post_date\'];
// Make sure the date is in the correct format here... Sanitize as well...
wp_update_post([
\'ID\' => $attachment_id,
\'post_date\' => $date,
\'post_date_gmt\' => get_gmt_from_date( $date )
]);
}
add_action( \'edit_attachment\', \'jch_edit_attachment\' );
您需要确保进入DB的任何日期都是正确的格式,因此您还需要一些验证。