在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):devinsays/customizer-library开源软件地址(OpenSource Url):https://github.com/devinsays/customizer-library开源编程语言(OpenSource Language):PHP 99.7%开源软件介绍(OpenSource Introduction):Customizer LibraryA helpful library for working with the WordPress customizer. AboutThe customizer allows WordPress developers to add options for themes and plugins, but it should be easier to work with. This library abstracts out some of the complexity. Instead of adding options to the $wp_customize object directly, developers can just define an array of controls and sections and pass it to the Customizer_Library class. To see how this works in practice, please see the Customizer Library Demo theme. The Customizer Library adds sections, settings and controls to the customizer based on the array that gets passed to it. There is default sanitization for all options (though you're still welcome to pass a sanitize_callback). All options are also saved by default as theme_mods (though look for a future update to make this more flexible). At the moment there is only one custom control (for textarea), but look for additional controls as the library matures. The Customizer Library includes additional classes and helper functions for creating inline styles and loading Google fonts. These functions and classes were developed by The Theme Foundry for their theme Make and I've found them quite useful in my own projects. However, I'm considering moving them into seperate modules in order to make the core library as focused as possible. Feedback on this is welcome. InstallationThe Customizer Library can be included in your own projects git submodule if you'd like to be able to pull down changes. To include it in your own projects the same way, navigate to the directory and use:
OptionsThe Customizer Library currently supports these options:
SectionsSections are convenient ways to group controls in the customizer. Customizer Sections can be defined like this: // Example Section
$sections[] = array(
'id' => 'example', // Required
'title' => __( 'Example Section', 'textdomain' ), // Required
'priority' => '30', // Optional
'description' => 'Example description', // Optional
'panel' => 'panel_id' // optional, and it requires WP >= 4.0
); PanelsPanels are a convenient way to group your different sections. Here's an example that adds a panel, a section to the panel, and then a text option to that section: // Panel Example
$panel = 'panel';
$panels[] = array(
'id' => $panel,
'title' => __( 'Panel Examples', 'demo' ),
'priority' => '100'
);
$section = 'panel-section';
$sections[] = array(
'id' => $section,
'title' => __( 'Panel Section', 'demo' ),
'priority' => '10',
'panel' => $panel
);
$options['example-panel-text'] = array(
'id' => 'example-panel-text',
'label' => __( 'Example Text Input', 'demo' ),
'section' => $section,
'type' => 'text',
); The Customizer_Library uses the core function Text$options['example-text'] = array(
'id' => 'example-text',
'label' => __( 'Example Text Input', 'textdomain' ),
'section' => $section,
'type' => 'text',
); URL$options['example-url'] = array(
'id' => 'example-url',
'label' => __( 'Example URL Input', 'textdomain' ),
'section' => $section,
'type' => 'url',
); Checkbox$options['example-checkbox'] = array(
'id' => 'example-checkbox',
'label' => __( 'Example Checkbox', 'textdomain' ),
'section' => $section,
'type' => 'checkbox',
'default' => 0,
); Select$choices = array(
'choice-1' => 'Choice One',
'choice-2' => 'Choice Two',
'choice-3' => 'Choice Three'
);
$options['example-select'] = array(
'id' => 'example-select',
'label' => __( 'Example Select', 'textdomain' ),
'section' => $section,
'type' => 'select',
'choices' => $choices,
'default' => 'choice-1'
); Drop Down Pages$options['example-dropdown-pages'] = array( 'id' => 'example-dropdown-pages', 'label' => __( 'Example Drop Down Pages', 'textdomain' ), 'section' => $section, 'type' => 'dropdown-pages', 'default' => '' );
Upload$options['example-upload'] = array(
'id' => 'example-upload',
'label' => __( 'Example Upload', 'demo' ),
'section' => $section,
'type' => 'upload',
'default' => '',
); Color$options['example-color'] = array(
'id' => 'example-color',
'label' => __( 'Example Color', 'demo' ),
'section' => $section,
'type' => 'color',
'default' => $color // hex
); Textarea$options['example-textarea'] = array(
'id' => 'example-textarea',
'label' => __( 'Example Textarea', 'demo' ),
'section' => $section,
'type' => 'textarea',
'default' => __( 'Example textarea text.', 'demo'),
); Select (Typography)$options['example-font'] = array(
'id' => 'example-font',
'label' => __( 'Example Font', 'demo' ),
'section' => $section,
'type' => 'select',
'choices' => customizer_library_get_font_choices(),
'default' => 'Monoton'
); Range$options['example-range'] = array(
'id' => 'example-range',
'label' => __( 'Example Range Input', 'demo' ),
'section' => $section,
'type' => 'range',
'input_attrs' => array(
'min' => 0,
'max' => 10,
'step' => 1,
'style' => 'color: #0a0',
)
); Content$options['example-content'] = array(
'id' => 'example-content',
'label' => __( 'Example Content', 'textdomain' ),
'section' => $section,
'type' => 'content',
'content' => '<p>' . __( 'Content to output. Use <a href="#">HTML</a> if you like.', 'textdomain' ) . '</p>',
'description' => __( 'Optional: Example Description.', 'textdomain' )
); Pass $options to Customizer LibraryAfter all the options and sections are defined, load them with the Customizer Library: // Adds the sections to the $options array
$options['sections'] = $sections;
$customizer_library = Customizer_Library::Instance();
$customizer_library->add_options( $options ); DemoA full working example can be found here: https://github.com/devinsays/customizer-library-demo/blob/master/inc/customizer-options.php StylesThe Customizer Library has a helper class to output inline styles. This code was originally developed by The Theme Foundry for use in Make. To see how it works, see "inc/styles.php". CSS selector(s) and value are passed to Customizer_Library_Styles class like this: Customizer_Library_Styles()->add( array(
'selectors' => array(
'.primary'
),
'declarations' => array(
'color' => $color
)
) ); Media QueriesMedia queries can also be be used with Customizer_Library_Styles. Here's an example for outputting logo-image-2x on high resolution devices. $setting = 'logo-image-2x';
$mod = get_theme_mod( $setting, false );
if ( $mod ) {
Customizer_Library_Styles()->add( array(
'selectors' => array(
'.logo'
),
'declarations' => array(
'background-image' => 'url(' . $mod . ')'
),
'media' => '(-webkit-min-device-pixel-ratio: 1.3),(-o-min-device-pixel-ratio: 2.6/2),(min--moz-device-pixel-ratio: 1.3),(min-device-pixel-ratio: 1.3),(min-resolution: 1.3dppx)'
) );
} FontsThe Customizer Library has a helper functions to output font stacks and load inline fonts. This code was also developed by The Theme Foundry for use in Make. You can see an example of font enqueing in "inc/mods.php": function demo_fonts() {
// Font options
$fonts = array(
get_theme_mod( 'primary-font', customizer_library_get_default( 'primary-font' ) ),
get_theme_mod( 'secondary-font', customizer_library_get_default( 'secondary-font' ) )
);
$font_uri = customizer_library_get_google_font_uri( $fonts );
// Load Google Fonts
wp_enqueue_style( 'demo_fonts', $font_uri, array(), null, 'screen' );
}
add_action( 'wp_enqueue_scripts', 'demo_fonts' ); Fonts can be used in inline styles like this: // Primary Font
$setting = 'primary-font';
$mod = get_theme_mod( $setting, customizer_library_get_default( $setting ) );
$stack = customizer_library_get_font_stack( $mod );
if ( $mod != customizer_library_get_default( $setting ) ) {
Customizer_Library_Styles()->add( array(
'selectors' => array(
'.primary'
),
'declarations' => array(
'font-family' => $stack
)
) );
} Change LogDevelopment
1.3.0
1.2.0
1.1.0
1.0.0
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论