Wordpress注册设置 - 图像

时间:2013-10-22 14:59:55

标签: wordpress settings image-uploading

我尝试将图片上传器添加到我的模板设置页面,我得到了这个:

<?php

function pp_admin_init(){
    register_setting('pp_theme_options', 'pp_name');
    register_setting('pp_theme_options', 'pp_title');
    //Odnosniki ikon
    register_setting('pp_theme_options', 'pp_share_facebook');
    register_setting('pp_theme_options', 'pp_share_twitter');
    register_setting('pp_theme_options', 'pp_share_google');
    register_setting('pp_theme_options', 'pp_share_pinterest');
    //czy wyswietlac ikony
    register_setting('pp_theme_options', 'pp_icon_facebook');
    register_setting('pp_theme_options', 'pp_icon_twitter');
    register_setting('pp_theme_options', 'pp_icon_google');
    register_setting('pp_theme_options', 'pp_icon_pinterest');
    //Image test
    register_setting('pp_theme_options', 'pp_image_upload', 'pp_image_upload');
}
//image test    
function pp_image_upload($args){
if(!empty($_FILES['pp_image_upload']['tmp_name']))
{
  $overrides = array(
    'test_form' => false
  );
  $banner_image = wp_handle_upload($_FILES['pp_image_upload'], $overrides);
  $args['pp_image_upload'] = $banner_image['url'];      
}else{
  $args['pp_image_upload'] = get_option('pp_theme_options')['pp_image_upload'];
}
return $args;
}   
//image test    


add_action('admin_init', 'pp_admin_init');

function pp_settings_page() {
    ?>
        <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/admin.css">    
        <div class="wrap">
            <?php screen_icon(); ?>
            <h2>Ustawienia szablonu Photography+</h2>
            <div id="pp-settings">
            <form action="options.php" method="post" id="pp-options-form">
                <?php settings_fields('pp_theme_options'); ?>
                <!-- Image test -->                 
                    <input type="file" name="image_upload" />                       
                     <?php
                        echo '<img src="' . pp_image_upload . '" style="width: 100px; vertical-align: top;" />';
                    ?>          
                <!-- Image test -->
                <center><h1>Ustawienia ogólne</h1></center>
                    <table>
                        <tr>
                            <td>
                                <p><label for="pp_name">Twoje imię</label></p>
                            </td>
                            <td>
                                <input name="pp_name" id="pp_name" type="text" value="<?php echo esc_attr(get_option('pp_name')); ?>" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p><label for="pp_title">Twój tytuł</label></p>
                            </td>
                            <td>
                                <input name="pp_title" id="pp_title" type="text" value="<?php echo esc_attr(get_option('pp_title')); ?>" />
                            </td>
                        </tr>
                    </table>                    
                <center><h1>Adresy ikon społecznościowych</h1></center>
                    <table>
                        <tr>
                            <td>
                                <p><label for="pp_share_facebook">Facebook</label></p>
                            </td>
                            <td>
                                <input name="pp_share_facebook" id="pp_share_facebook" type="text" value="<?php echo esc_attr(get_option('pp_share_facebook')); ?>" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p><label for="pp_share_twitter">Twitter</label></p>
                            </td>
                            <td>
                                <input name="pp_share_twitter" id="pp_share_twitter" type="text" value="<?php echo esc_attr(get_option('pp_share_twitter')); ?>" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p><label for="pp_share_google">Google +</label></p>
                            </td>
                            <td>
                                <input name="pp_share_google" id="pp_share_google" type="text" value="<?php echo esc_attr(get_option('pp_share_google')); ?>" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p><label for="pp_share_pinterest">Pinterest</label></p>
                            </td>
                            <td>
                                <input name="pp_share_pinterest" id="pp_share_pinterest" type="text" value="<?php echo esc_attr(get_option('pp_share_pinterest')); ?>" />
                            </td>
                        </tr>
                    </table>
                    <center><h1>Widoczność ikonek</h1></center>
                    <table>
                        <tr>
                            <td>
                                <p>Facebook</p>
                            </td>
                            <td>
                                <input name="pp_icon_facebook" id="pp_icon_facebook" type="checkbox" value="1" <?php checked( '1', get_option( 'pp_icon_facebook' ) ); ?> /><label for="pp_icon_facebook">Włącz/wyłącz widoczność ikonki Facebooka</label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p>Twitter</p>
                            </td>
                            <td>
                                <input name="pp_icon_twitter" id="pp_icon_twitter" type="checkbox" value="1" <?php checked( '1', get_option( 'pp_icon_twitter' ) ); ?> /><label for="pp_icon_twitter">Włącz/wyłącz widoczność ikonki Twittera</label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p>Google+</p>
                            </td>
                            <td>
                                <input name="pp_icon_google" id="pp_icon_google" type="checkbox" value="1" <?php checked( '1', get_option( 'pp_icon_google' ) ); ?> /><label for="pp_icon_google">Włącz/wyłącz widoczność ikonki Google+</label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p>Pinterest</p>
                            </td>
                            <td>
                                <input name="pp_icon_pinterest" id="pp_icon_pinterest" type="checkbox" value="1" <?php checked( '1', get_option( 'pp_icon_pinterest' ) ); ?> /><label for="pp_icon_pinterest">Włącz/wyłącz widoczność ikonki Pinterest</label>
                            </td>
                        </tr>
                    </table>                            
                <div class="pp_send"><input class="button button-primary" type="submit" value="zapisz" /></div>
            </form>
            </div>
        </div>  
    <?php

}

function pp_settings_menu(){
    add_theme_page('Photography+  - Ustawienia', 'Szablon Photography+', 'manage_options', 'pp-theme-options', 'pp_settings_page');
}

add_action('admin_menu', 'pp_settings_menu');

//powiadomienie dla admina
function show_admin_panel_message() {
    $key = esc_attr(get_option('pp_name'));
    $keyt = esc_attr(get_option('pp_title'));

    if(empty($key)) {
        echo '<div id="message" class="error"><p><strong>Szablon Photography+ wymaga dodania Imienia do strony głównej</strong></p></div>';
    }
    if(empty($keyt)) {
        echo '<div id="message" class="error"><p><strong>Szablon Photography+ wymaga dodania Tutułu do strony głównej</strong></p></div>';
    }
}

add_action('admin_notices', 'show_admin_panel_message');

&GT;

所有表格都有效,但图片上传者除外。有人可以解释我如何将图像上传器添加到自定义设置页面?正如您在代码中看到的,我不知道如何使用add_settings_field。我被教授这种方法,现在我只想扩展我的知识

1 个答案:

答案 0 :(得分:0)

比修复此代码更好的方法是使用WordPress方式。

您在pp_admin_init注册了一些设置,但未在pp_settings_page中使用它们。尽可能使用Settings API。检查该Codex文章中的所有外部参考文献,许多重量级人员都写了很好的教程。另一个Codex页面也有一个很好的例子:Creating Options Pages

对于上传问题也是:以WP的方式做。您必须创建一个弹出默认上传器的按钮,因此图像处理/上传是实时完成的,您的表单/设置将只存储图像ID / URL。这是WordPress Answers的one article of interestrelevant posts