web-dev-qa-db-ja.com

テーマパネルのWordpressロゴアップロードオプション

こんにちは私はワードプレスの私のテーマパネルにロゴのオプションを追加することで1つの問題に直面しています

function logo_display()
{
    ?>
        <input type="file" name="logo" /> 
        <?php echo get_option('logo'); ?>
   <?php
}
function handle_logo_upload()
{
    if(!empty($_FILES["demo-file"]["tmp_name"]))
    {
        $urls = wp_handle_upload($_FILES["logo"], array('test_form' => FALSE));
        $temp = $urls["url"];
       return $temp;   
    }  
    return $option;
}
function display_theme_panel_fields()
{
    add_settings_section("section", "All Settings", null, "theme-options");
    add_settings_field("logo", "Logo", "logo_display", "theme-options", "section");  
    register_setting("section", "logo", "handle_logo_upload");
}
add_action("admin_init", "display_theme_panel_fields");

問題は、ロゴが保存されず、管理者にも表示されないことです。私はこれを異なる方法で10回試しましたが、このコードは機能しません。このコードを見て、助けてください。

1
neil

あなたがワードプレスカスタマイザを使用しているなら、このコードを試してください

public static function register ( $wp_customize ) {
    // Logo upload
    $wp_customize->add_section( 'bia_logo_section' , array(
        'title'       => __( 'Site Logo', 'bia' ),
        'priority'    => 30,
        'description' => 'Upload a logo to replace the default site name and description in the header',
    ) );

    $wp_customize->add_setting( 'bia_logo', array(
        'sanitize_callback' => 'esc_url_raw',
    ) );

    $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'bia_logo', array(
        'label'    => __( 'Site Logo', 'bia' ),
        'section'  => 'bia_logo_section',
        'settings' => 'bia_logo',
    ) ) );
}

私はあなたも試すことができると思います redux framework /管理パネルオプション

1
shamim khan

バージョン4.5以降、 テーマロゴ はWordPressの標準機能です。 functions.phpに以下のコードを追加するだけです。

function wpse237461_theme_logo() {
    add_theme_support( 'custom-logo', array(
        'height'      => 100,
        'width'       => 400,
        'flex-width' => true ) );
    }
add_action( 'after_setup_theme', 'wpse237461_theme_logo' );

これでテーマカスタマイザでロゴを変更でき、the_custom_logo()を使ってテーマに追加できます。ファイルやオプションを自分で処理する必要はありません。

2
cjbj