web-dev-qa-db-ja.com

設定ページから画像をアップロードする方法を教えてください。

あなたの設定ページにアップロードボックスを含める簡単な方法はありますか?

私はOpen Graphオプションページを作成しています、そして私はユーザーがそのページから直接標準的な画像をアップロードするのが好きです。

3
Mark

WordPressはまさにこの目的のために便利な機能を提供しています: wp_handle_upload()

設定ページに適切なファイルフォームフィールドがあり、オプションにregister_setting()を使用しているため、オプション検証コールバックが既にあると仮定して、単にwp_handle_upload()を使用してファイルフォームフィールドのデータを処理します。これが例です:

<?php
// Validate file fields
else if ( 'file' == $optiondetails['type'] ) {
    if ( isset( $input[$setting] ) ) {
        // Only update setting if input value is in the list of valid options
        $setting_file = $setting . '_file';
        $valid_input[$setting] = ( isset( $_FILES[$setting_file] ) ? theme-slug_image_upload( $setting, $input ) : $valid_input[$setting] );
    }
}
?>

次に、theme-slug_image_upload()を使用して、そのwp_handle_upload()コールバックを定義するだけです。

<?php
function theme-slug_image_upload( $the_file, $input ) {
    $data = $_FILES[$the_file . '_file'];
    if ( '' != $data['name'] )
        $upload = wp_handle_upload( $_FILES[$the_file . '_file'], array( 'test_form' => false ) );
    else
        $upload['url'] = $input[$the_file];
    return $upload['url'];
}
?>

それはほとんどです。

2
Chip Bennett