如何将默认图片添加到主题定制图片控件中?

时间:2013-04-30 作者:user1632018

我想知道如何用我选择的图像预加载主题定制器图像控件。它们是将控件指向目录的一种方式,以便它们自动显示在上载的列表中吗?因此,如果用户喜欢,可以从列表中选择图像。

如果有人能解释这一点,我将不胜感激。

EDIT: I have decided to add more information along with the bounty.

当用户使用主题定制器(使用主题定制器API构建)时,他们最终决定不喜欢当前背景图像并且不想编辑它,因此他们选择背景图像设置/控件来更改它。嗯,我希望一组图像在默认情况下出现在下拉列表中,因此如果用户想要一组图像,那么他们可以选择它,或者上载一个新图像。因此,当他们选择下拉列表时,其中会预加载大约5幅图像。

我认为这可能需要通过将控件指向文件夹来实现,但我不确定如何实现。我以前见过这个,但我不记得在哪里了。

我正在使用主题定制器中的默认图像控件。

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

我们的旅程开始了here 使用WP_Customize_Background_Image_Control 类,它是WP_Customize_Image_Control.

我可以想象在现有的基础上,在新的选项卡中提供这些内置背景Upload NewUploaded 选项卡。至少有两种方法可以实现以下目标:或者根据WP_Customize_Background_Image_Control 类,或通过劫持全局$wp_customize 相反前者是一条更长的路(尽管可能更干净),我们首先要定义我们的新控制:

class WP_Customize_Background_Image_Control_Defaults extends WP_Customize_Background_Image_Control {
    public function __construct( $manager ) {
    ...
        $this->add_tab( \'builtins\', __(\'Built-ins\'), array( $this, \'tab_builtins\' ) );

    ...
    public function tab_builtins() {
    ...
}
然后删除默认的背景图像控件registered by default 并添加我们自己的新类:

add_action( \'customize_register\', function( $wp_customize ) {
    /* Substitute the default control for our new one */
    $wp_customize->remove_control( \'background_image\' );
    $wp_customize->add_control( new WP_Customize_Background_Image_Control_Defaults( $wp_customize ) );
}, 11, 1 );
然后,新选项卡将简单地回显主题附带的一组预定义图像,类似于默认tab_uploaded 具有轻微调整的功能。无论是使用自定义类还是尝试更快的方法,此函数都是相同的。

更快、更紧凑的方法包括在初始化后使默认控件与我们的音调同步,如下所示:

add_action( \'customize_register\', function( $wp_customize ) {

    $control = $wp_customize->get_control( \'background_image\' );
    $control->add_tab( \'builtins\', __(\'Built-ins\'), function() {
        /* Supply a list of built-in background that come with your theme */
        $backgrounds = array(
            \'images/bg-01.png\', \'images/bg-02.png\', ...
        );

        global $wp_customize;
        $control = $wp_customize->get_control( \'background_image\' );

        foreach ( (array) $backgrounds as $background )
            $control->print_tab_image( esc_url_raw( get_stylesheet_directory_uri() . \'/\' . $background ) );

    } );

}, 11, 1 );
同样,如果你选择使用自己的类,你也会这样做,add_tab 其中print_tab_image 在所有预设背景上。非常简单。我相信您可以用各种零碎的东西进一步改进代码,但总体而言,我认为这是一条路要走。

欢迎提出问题、想法和想法。

Default background images in Theme Customizer

结束

相关推荐

如何在WordPress Post文件中编辑php代码?

我有一个wordpress页面。在wordpress页面中,用户可以访问以下窗口Publish 他们在网页上的帖子。如果用户在我上面用红色标记的三个字段中的任何一个字段中输入URL,我的php代码将查找这些URL并确定它们是否为垃圾邮件。因此,我想把我的php代码放在Publish 按钮,这样我可以在php代码运行后禁止或允许发布,并确定这些URL是否为垃圾邮件。你能告诉我为了放入php代码,我应该编辑的wordpress文件的名称吗。我是wordpress的新手,对他们的文件结构不太了解。