如何使上载的字段可供媒体库编辑?

时间:2018-06-23 作者:jchwebdev

媒体库条目的“上载”日期字段为只读。是否有办法使其在上载中的附件详细信息窗口中可编辑。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\' );

1 个回复
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的任何日期都是正确的格式,因此您还需要一些验证。

结束

相关推荐