使用WP_Customize_Image_Control仅显示图像拾取器

时间:2013-08-05 作者:hanspan

我希望实现以下目标(使用Twentyle2的副本):

关闭自定义标题主题支持,以防止用户能够上载自己的图像(已实现)

  • 在自定义管理区域创建自己的部分(已实现)
  • 添加包含要选择的缩略图的列表以替换标题图像。没有上载功能
  • 我正在尝试挂接到customize\\u寄存器并使用WP\\u customize\\u Image\\u控件,但要将其only 显示不带上载选项的预定义图像列表。这post 解释如何使用customize\\u寄存器,并在底部的附加注释中描述每个控件可以执行的操作。建议使用WP\\u Customize\\u Image\\u控件上载和显示图像列表。我只是想要一份清单。

    post 显示如何将图像添加到“默认”选项卡,但必须打开原始自定义标题主题支持,用户可以选择从管理页面添加标题图像。

    我知道我可以用一个简单的下拉菜单来完成,但我喜欢提供视觉提示的选择器窗口。

    是否有人建议我如何利用customize\\u register来实现这一点?

    2 个回复
    最合适的回答,由SO网友:hanspan 整理而成

    感谢大家的回复。作为WordPress和OOP的新手,创建自己的类似乎相当令人畏惧。我已经拼凑出另一个解决方案来完成这项工作。

    首先,我重新启用了自定义标题主题支持,然后修改了我的函数。php文件。

    首先,我想阻止用户从wp主菜单访问“Header”链接。通过标题链接,他们可以上传图像,因此通过添加以下代码段,我可以从管理菜单中删除此内容:

    add_action( \'admin_menu\', \'adjust_the_wp_menu\', 999 );
    function adjust_the_wp_menu() {
      $page = remove_submenu_page( \'themes.php\', \'custom-header\' );
    }
    
    然后,我使用register\\u default\\u headers()函数将默认图像加载到现有的custom\\u头中。我不知道怎么做,但这也提供了从自定义窗口停止上传所需的功能。在自定义主题视图中,在标题图像下的“上载”旁边创建了一个名为“默认”的选项卡。

    add_action( \'after_setup_theme\', \'add_default_banner_images\' );    
    if ( ! function_exists(\'add_default_banner_images\') ):    
        define( \'HEADER_IMAGE\', \'%s/banners/5.jpg\' );       
        register_default_headers( 
            array (
                \'head\' => array (
                    \'url\' => \'%s/banners/1.jpg\',
                    \'thumbnail_url\' => \'%s/banners/1.jpg\',
                    \'description\' => __( \'Image 01\', \'twentytwelve_mod\' )
                ),
                \'vision\' => array (
                    \'url\' => \'%s/banners/2.jpg\',
                    \'thumbnail_url\' => \'%s/banners/2.jpg\',
                    \'description\' => __( \'Image 02\', \'twentytwelve_mod\' )
                ),
                \'gallery\' => array (
                    \'url\' => \'%s/banners/3.jpg\',
                    \'thumbnail_url\' => \'%s/banners/3.jpg\',
                    \'description\' => __( \'Image 03\', \'twentytwelve_mod\' )
                ),
                \'sea\' => array (
                    \'url\' => \'%s/banners/4.jpg\',
                    \'thumbnail_url\' => \'%s/banners/4.jpg\',
                    \'description\' => __( \'Image 04\', \'twentytwelve_mod\' )
                ),
                \'orangeworld\' => array (
                    \'url\' => \'%s/banners/5.jpg\',
                    \'thumbnail_url\' => \'%s/banners/5.jpg\',
                    \'description\' => __( \'Image 05\', \'twentytwelve_mod\' )
                )           
            ) 
        );
    }
    endif;
    
    最后,我利用“cusomize\\u register”挂钩删除了标题图像下不需要的“Upload”选项卡:

    add_action( \'customize_register\', \'customize_register_mytheme\' );
    function customize_register_mytheme( $wp_customize ) {
    
        //Remove \'uploaded\' tab from control \'header_image\'
        $controlHeaderImage = $wp_customize->get_control( \'header_image\' );     
        $controlHeaderImage->remove_tab( \'uploaded\' );
    }
    

    SO网友:Fabien Quatravaux

    我建议你建立自己的WP_Customize_Control 类,它完全满足您的需要。可以复制粘贴核心WP_Customize_Image_Control 在您自己的类上编写代码,并对其进行修改以满足您的需要。

    你可以跟随Otto\'s guide 创建新控件。

    我个人使用Customizer API修改background-position 使用鼠标拖动移动的背景图像的CSS属性(请参见the git repo).

    结束

    相关推荐

    Define Folder to save Images

    插件将图像保存到/PLUGINNAME/Images,但我希望它移动到/uploads插件中的代码如下define(\'WPR_URLPATH\', WP_PLUGIN_URL.\'/\'.plugin_basename( dirname(__FILE__) ).\'/\' ); $wpr_saveurl = WPR_URLPATH . \"images\"; $wpr_cache = ABSPATH . \"wp-content/plugins/\". plugin_basename(