Intuitive Website Styling integrated into WordPress' Customizer

Overview

Customify - Intuitive Website Styling for WordPress

With Customify, developers can easily create advanced theme-specific options inside the WordPress Customizer. Using those options, a user can make presentational changes without having to know or edit the theme code.

This plugin is primarily intended to be used together with Pixelgrade themes. So the best way to get acquainted with it's capabilities is to study the way one of Pixelgrade's themes integrates with it.

Made with care by Pixelgrade

How to use it?

First you need to install and activate the stable version. This will always be on wordpress.org

Now go to ‘Appearance -> Customize’ menu and have fun with the new fields provided by your active theme.

For WordPress theme developers

Make your own Customizer options

The Customify $config can be filtered by any theme and this is how you do it, include this filter in your theme(probably in functions.php)

 // Advice: change this function's name and make sure it is unique
 
add_filter('customify_filter_fields', 'make_this_function_name_unique' );

function make_this_function_name_unique( $config ) {

	// usually the sections key will be here, but a check won't hurt
	if ( ! isset($config['sections']) ) { 
		$config['sections'] = array();
	}
	
	// this means that we add a new entry named "theme_added_settings" in the sections area
	$config['sections']['theme_added_settings'] = array(
		'title' => 'Section added dynamically',
		'settings' => array( 
		
			// this is the field id and it must be unique
			'field_example' => array(
				'type'  => 'color', // there is a list of types below
				'label' => 'Body color', // the label is optional but is nice to have one
				'css' => array(
				
					// the CSS key is the one which controls the output of this field
					array(
					 	// a CSS selector
						'selector' => '#logo',
						// the CSS property which should be affected by this field
						'property' => 'background-color',
					)
					
					// repeat this as long as you need
					array(
						'selector' => 'body',
						'property' => 'color',
					)
				)
			)
		)
	);
	
	// when working with filters always return filtered value
	return $config;
}

Customify also creates its own defaults this way. You can see that in customify/customify_config.php Personally I like to simply copy this file in my child theme and include it in functions.php with

require 'customify_config.php'

And after that the sky is the limit. I can style any elements or group of elements in the Customizer.

The intro is over let's get to some advanced stuff.

List of fields

Fields Live Preview Support! Description
Text Yes with classes A simple text input
Textarea Yes with classes A simple text area input
Ace Editor Yes with classes An ace editor that supports plain_text / css / html / javascript / json / markdown
Color Yes A simple color picker
Range Yes The default html5 range input
Font Custom Live Preview A complete font selector with Live Preview, google fonts, filtrable theme fonts and custom callbacks
Select No The standard HTML select
Radio No
Checkbox No
Upload No This field allows you to upload a file which you can use it later in front-end
Image No This is like the upload field, but it accepts only images
Date No
Pages select No The standard WordPress Page Select
Select2 No An awesome select
Presets No An radio input option to select a group of options (inception style ^^)

Advanced Things

The $config variable

This is the array which is processed by the customify_filter_fields filter and it contains:

  • 'sections' an array with sections(each section holds an array with fields)
  • 'panels' an array of panels( each panel holds an array with sections)
  • 'opt-name' the option key name which will hold all these options

Media queries

The css configuration can also hold a media parameter which will make the output of the CSS property, to wrap in the specified media query, for example:

'site_title_size' => array(
	'type'  => 'range',
	'label' => 'Site Title Size',
	'default' => 24,
	'css' => array(
		array(
			'property' => 'font-size',
			'selector' => '.site-title',
			'media' => 'screen and (min-width: 1000px)'
		)
	)
)

This will make the property take effect only on screens larger than 1000px, because on mobile devices you may not want a bigger logo.

Field callbacks

Each field can take a 'callback_filter' parameter.This should be a function name which should be called when a field is changed.

For example let's take this range field:

'sidebar_width' => array(
	'type'  => 'range',
	'label' => 'Sidebar width',
	'input_attrs' => array(
		'min'   => 60,
		'max'   => 320,
		'step'  => 60,
	),
	'css' => array(
		array(
			'selector' => 'span.col',
			'property' => 'width',
			'unit' => 'px',
			'callback_filter' => 'this_setting_can_call_this_function'
		)
	)
)

Now let's create a callback which multiplies the effect of this css property Let's say that we want the sidebar to grow faster in length and double its value when the slider is changed

function this_setting_can_call_this_function( $value, $selector, $property, $unit ) {

	$this_property_output = $selector . ' { '. $property .': '. ( $value * 2 ) . $unit . "; } \n";

	return $this_property_output;
}

HTML field | No | A field which allows you to add custom HTML in customizer and hook into it with javascript later ;)

Live Preview Support

There are a few fields which support this feature for now, but those are awesome.These fields are capable to update the previewer iframe without refreshing the iframe, the preview should be instant.

This is recommended for color fields because you won't need to stop drag-and-dropping the color select to see what color would be better.

Note All the text fields have support for a live preview but they require an array of classes instead of the boolean true for the live parameter.

For example a fields which would provide the copyright text from footer whould be like this:

'footer_copyright' => array(
	'type'     => 'text',
	'label'    => 'Footer Copyright'
	'default'  => 'All contents © Pixelgrade 2011-2015'
	'sanitize_callback' => 'wp_kses_post',
	'live' => array( '.copyright-class' )
)

For this example the element with the .copyright-class class will get the text replaced as soon as the user types a new text. I bet this is awesome.

Conditional fields

Along with version 1.2.3 we've added support for conditional fields. This means that you can use the show_if argument to display a field only when another field has a certain value.

This gist shows how this can be done.

Presets

Since version 1.1.0 we added support for presets options. With this fields, you can pre-define other options. Here is and example of how to config this.

'theme_style'   => array(
	'type'      => 'preset',
	'label'     => __( 'Select a style:', 'customify' ),
	'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify' ),
	'default'   => 'silk',
	'choices_type' => 'select',
	'choices'  => array(
		'silk' => array(
			'label' => __( 'Silk', 'customify' ),
			'options' => array(
				'links_color' => '#FAC2A8', //second
				'headings_color' => '#A84469', //main
				'body_color' => '#ffffff', // -
				'headings_font' => 'Playfair Display', //main
				'body_font' => 'Merriweather'
			)
		),
		'red' => array(
			'label' => __( 'Urban', 'customify' ),
			'options' => array(
				'links_color' => 'red',
				'headings_color' => 'red',
				'body_color' => 'red',
				'headings_font' => 'Exo',
				'body_font' => 'Pacifico'
			)
		),
		'black' => array(
			'label' => __( 'Black', 'customify' ),
			'options' => array(
				'links_color' => '#ebebeb',
				'headings_color' => '#333',
				'body_color' => '#989898',
				'headings_font' => 'Arvo',
				'body_font' => 'Lora'
			)
		),
	)
)

The above example will output a select which will change all the fields configured in the options array.

If you don't like the select type, at choices_type you can choose between select, button and an awesome radio select which allows you to not only change the font-end options but also the preview button style.

Wanna have a preset like this?

img

Just add this section in your config

'presets_section' => array(
	'title'    => __( 'Style Presets', 'customify' ),
	'options' => array(
		'theme_style'   => array(
			'type'      => 'preset',
			'label'     => __( 'Select a style:', 'customify' ),
			'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify' ),
			'default'   => 'royal',
			'choices_type' => 'awesome',
			'choices'  => array(
				'royal' => array(
					'label' => __( 'Royal', 'customify' ),
					'preview' => array(
						'color-text' => '#ffffff',
						'background-card' => '#615375',
						'background-label' => '#46414c',
						'font-main' => 'Abril Fatface',
						'font-alt' => 'PT Serif',
					),
					'options' => array(
						'links_color' => '#8eb2c5',
						'headings_color' => '#725c92',
						'body_color' => '#6f8089',
						'page_background' => '#615375',
						'headings_font' => 'Abril Fatface',
						'body_font' => 'PT Serif',
					)
				),
				'lovely' => array(
					'label' => __( 'Lovely', 'customify' ),
					'preview' => array(
						'color-text' => '#ffffff',
						'background-card' => '#d15c57',
						'background-label' => '#5c374b',
						'font-main' => 'Playfair Display',
						'font-alt' => 'Playfair Display',
					),
					'options' => array(
						'links_color' => '#cc3747',
						'headings_color' => '#d15c57',
						'body_color' => '#5c374b',
						'page_background' => '#d15c57',
						'headings_font' => 'Playfair Display',
						'body_font' => 'Playfair Display',
					)
				),
				'queen' => array(
					'label' => __( 'Queen', 'customify' ),
					'preview' => array(
						'color-text' => '#fbedec',
						'background-card' => '#773347',
						'background-label' => '#41212a',
						'font-main' => 'Cinzel Decorative',
						'font-alt' => 'Gentium Basic',
					),
					'options' => array(
						'links_color' => '#cd8085',
						'headings_color' => '#54323c',
						'body_color' => '#cd8085',
						'page_background' => '#fff',
						'headings_font' => 'Cinzel Decorative',
						'body_font' => 'Gentium Basic',
					)
				),
				'carrot' => array(
					'label' => __( 'Carrot', 'customify' ),
					'preview' => array(
						'color-text' => '#ffffff',
						'background-card' => '#df421d',
						'background-label' => '#85210a',
						'font-main' => 'Oswald',
						'font-alt' => 'PT Sans Narrow',
					),
					'options' => array(
						'links_color' => '#df421d',
						'headings_color' => '#df421d',
						'body_color' => '#7e7e7e',
						'page_background' => '#fff',
						'headings_font' => 'Oswald',
						'body_font' => 'PT Sans Narrow',
					)
				),
				'adler' => array(
					'label' => __( 'Adler', 'customify' ),
					'preview' => array(
						'color-text' => '#fff',
						'background-card' => '#0e364f',
						'background-label' => '#000000',
						'font-main' => 'Permanent Marker',
						'font-alt' => 'Droid Sans Mono',
					),
					'options' => array(
						'links_color' => '#68f3c8',
						'headings_color' => '#0e364f',
						'body_color' => '#45525a',
						'page_background' => '#ffffff',
						'headings_font' => 'Permanent Marker',
						'body_font' => 'Droid Sans Mono'
					)
				),
				'velvet' => array(
					'label' => __( 'Velvet', 'customify' ),
					'preview' => array(
						'color-text' => '#ffffff',
						'background-card' => '#282828',
						'background-label' => '#000000',
						'font-main' => 'Pinyon Script',
						'font-alt' => 'Josefin Sans',
					),
					'options' => array(
						'links_color' => '#000000',
						'headings_color' => '#000000',
						'body_color' => '#000000',
						'page_background' => '#000000',
						'headings_font' => 'Pinyon Script',
						'body_font' => 'Josefin Sans',
					)
				),
			)
		),
	)
)

Font Selector

In 1.3.0 we introduced the new font selector, it works with live preview only and it has this possible configs:

'headings_font' => array(
    'type'        => 'font',
    'label'       => esc_html__( 'Headings', 'customify' ),
    'desc'        => esc_html__( 'o descriere', 'customify' ),
    'selector'    => 'h1, h2, h3, h4, .title, .sub-title',

    // Set the defaults
    'default'   => array(
        'font-family' => 'Open Sans',
        'font-weight' => '400',
        'font-size'   => 24,
        'line-height' => 1.5,
        'letter-spacing' => 1,
        'text-align' => 'initial',
        'text-transform' => 'uppercase',
        'text-decoration' => 'underline'
    ),

    //'load_all_weights' => true,

    'recommended' => $recommended_headings_fonts,   // List of recommended fonts defined by theme
    
    // Sub Fields Configuration (optional)
    'fields'    => array(
        'font-size'     => array(                           // Set custom values for a range slider
            'min'          => 10,
            'max'          => 40,
            'step'         => 1,
            'unit'         => 'px',
        ),
        'line-height'    => array(0, 2, 0.1, ''),           // Short-hand version
        'letter-spacing' => array(-1, 4, 0.1, 'em'),
        'text-align'     => true,                           // Disable sub-field (False by default)
        'text-transform' => true,
        'text-decoration'=> true,
    ),
    'callback' => 'your_custom_callback_function'
),

In the above example you can see the callback parameter, it supports a PHP or Javascript function which should replace the current output of the font

function your_custom_callback_function( $value, $font ) {
	return $combined_css';
}

function add_javascript_callback_function() { ?>
	<script>
		function your_custom_callback_function( $values, field ) {
			return $combined_css;
		}

	</script>
<?php }
add_action( 'customize_preview_init', 'add_javascript_callback_function' );

Local Fonts

Also this font selector comes with the ability to add custom fonts from a theme. If a theme comes with the name of a font and a stylesheet with its fontface it will be added as the first option of the font selector

function theme_add_customify_theme_fonts ( $fonts ) {
	$fonts['Custom Font'] = array(
		'family' => 'Custom Font',
		'src' => get_template_directory_uri() . '/assets/fonts/custom_font/stylesheet.css',
		'variants' => array( '400', '700' )
	);
	return $fonts;
}
add_filter( 'customify_theme_fonts', 'theme_add_customify_theme_fonts' );

Developer Love

We know developers are a special kind of breed and they need special kinds of treats. That is why we have introduced options dedicated to them.

Reset Buttons

In the plugin's settings page (WP Dashboard > Settings > Customify) you will find a checkbox called Enable Reset Buttons that once activated will show a new Customizer section called Customify Toolbox and also introduce buttons in each section or panel configured via the plugin.

All these buttons will reset the options to their default values.

Continuous Default Values

If you want to go even further, there is a nuclear option. Simply define the CUSTOMIFY_DEV_FORCE_DEFAULTS constant to true and everywhere the default value will be used. You can play with the values in the Customizer and the live preview will work, but no value gets saved in the database.

Add this in your wp-config.php file:

define( 'CUSTOMIFY_DEV_FORCE_DEFAULTS', true);

License

GPLv2 and later, of course!

Thanks!

This plugin also includes the following libraries:

Comments
  • Update documentation to match new Customizer sections organization - shop themes

    Update documentation to match new Customizer sections organization - shop themes

    O data cu update-ul la 1.7.4 care include reorganizarea sectiunilor din Customizer trebuie sa updatam si documentatia temelor cu noile locatii. De ex. Appearance > Main Content > ... devine Appearance > Theme Options > Main Content > ...

    Toate sectiunile introduse de teme se muta in panoul Theme Options.

    Propun ca intai sa facem modificarile doar la documentia temelor de pe shop, si apoi la celelalte.

    • [ ] Vasco
    • [ ] Julia
    • [ ] Felt
    • [ ] Silk
    • [ ] Gema
    • [ ] Patch
    • [ ] Hive

    @pixelgrade/heroes @georgeolaru

    [Docs] Outdated [Pri] High 
    opened by vladolaru 17
  • [Style Manager] Styling the Color Palettes Cards

    [Style Manager] Styling the Color Palettes Cards

    Description

    Color Palettes este prima componenta de stilizare din Style Manager pe care vrem sa o oferim clientilor. Dupa cum spune si numele, acesta se va ocupa strict de culori si are ca scop simplificarea experientei utilizatorului in ceea ce priveste alegerea paletei de culori a site-ului sau.

    Design

    customify 1 5 0 - default state

    Guidelines

    👩‍🎨 Aceeasi paleta, teme diferite

    • O paleta de culori reprezinta o baza pentru fiecare tema. Astfel, din cele 7 culori ale unei palete, fiecare tema defineste care dintre ele le foloseste in stilizarea elementelor. Spre exemplu, avem o paleta oarecare, iar Vasco preia doar 5 dintre culori (2 Color, 2 Dark, 1 Light), iar Hive doar 6 (1 Color, 3 Dark, 2 Light). Astfel:
    • componenta de Color Palettes va avea doua sectiuni:
      • o lista de palete de culori predefinite de noi
      • controale pentru culorile care se afla in paleta curent selectata

    🎨 Paleta de culori

    Structura unei palete de culori

    • Nume
    • 7 culori, care sunt grupate in felul urmator:
      • 2 Color
      • 3 Dark
      • 2 Light

    Un exemplu de configurare pentru o paleta numita "Vasco":

    'vasco'  => array(
    	'label'   => __( 'Vasco', 'customify' ),
    		'options' => array(
    			'sm_color_primary'   => '#38C3C8',
    			'sm_color_secondary' => '#F59828',
    			'sm_dark_primary'    => '#2b2b28',
    			'sm_dark_secondary'  => '#2B3D39',
    			'sm_dark_tertiary'   => '#65726F',
    			'sm_light_primary'   => '#F5F6F1',
    			'sm_light_secondary' => '#E6F7F7',
            ), 
    )
    

    State-urile unei palete de culori

    • Default: va fi afisat numele si un mic hint/preview (acel "A" intr-un patrat). Fundalul etichetei cu numele + litera "A" vor prelua prima culoare de background (Primary Background), iar fundalul patratului va prelua prima culoare de accent (Primary Color)
    • Hover: la hover vor aparea cele x culori pe care tema le suporta. Dupa exemplul de mai sus, Vasco va afisa 5 culori, iar Hive 6.
    • Active: litera "A" din small preview se va transforma intr-un checkmark

    🖍 Controale pentru culorile unei palete

    • controalele care vor aparea in aceasta sectiune vor fi doar cele suportate de tema. Revenind deci inapoi la exemplul de mai sus, Vasco va avea 5 controale, iar Hive 6
    • Pentru o prima varianta vom lasa controalele pentru culori ca cele pe care le utilizam pana acum (Label + Color Picker), urmand sa lucram la gruparea lor intr-un mod mai coerent
    • o data ce o culoare a unei palete curente este modificata, iar acea paleta nu se regaseste intre cele definite, aceasta devine o paleta Custom. In acest caz, paleta din lista de mai sus care era selectata va trece din state-ul Active in cel Default

    Resources

    InVision

    Front-end 
    opened by ilincaroman 15
  • Reorganize Customizer Sections to Isolate

    Reorganize Customizer Sections to Isolate "Style Manager" and Advanced "Theme Options"

    O data cu evolutia Style Manager-ului avem nevoie sa trecem in plan secundar actualele sectiuni din Customizer (eg. Header, Main Content, Footer) si sa le lasam disponibile mai mult cand utilizatorul are intentia sa controleze la nivel granular optiunile temei.

    Propun sa cautam o modalitate prin care sa grupam (automat?) aceste sectiuni in momentul in care este prezenta sectiunea Style Manager si sa incercam sa le evidentiem vizual prin atasarea unor mici icon-uri (via Dashicons din WordPress):

    customizer sections 1 5

    2 points [Type] Enhancement Style Manager 
    opened by georgeolaru 11
  • Add support for font family stacks

    Add support for font family stacks

    Just like we have now for standard fonts (e.g. Arial, Helvetica, sans-serif), we should consistently support font-family having a value defined as a font stack for fallback purposes.

    Right now, besides standard fonts, we don't support such a behavior, all font-family values are expected to have just a value.

    By switching to a list value for font-family we could accommodate single and multiple values.

    @razwan @georgeolaru What say you?

    [Type] Enhancement Back-end Style Manager 
    opened by vladolaru 10
  • Add Connected Fields Options

    Add Connected Fields Options

    Primul pas in oferirea unui nou layer de optiuni, mai simplificat, mai consistent si mai aproape de nevoile utilizatorilor, ar fi sa oferim posibilitatea ca un field sa poata controla deodata mai multe field-uri (de acelasi tip).

    Un exemplu concret e un field de Main Color care in momentul modificarii lui, schimba automat culoarea la Heading 1, Page Title si Card Title.

    color palettes options

    Propunerea mea e sa extindem config-ul actual astfel incat sa putem conecta o optiune parinte de un child:

    "color_palette_main" => {
    	"type" 		=> "color",
    	'selector'	=> ".blob_style_1",
    	"connected" 	=> {
    		"blog_item_title_color",
    		"main_content_heading_1_color",
    		"main_content_page_title_color"
    	}
    }
    
    "color_palette_secondary" => {…}
    "color_palette_tertiary" => {…}
    "color_palette_background" => {…}
    

    —— Pasul urmator, inainte sa generam dinamic paletele de culori, e sa scriem manual o lista de preset-uri care sa se aplice inlantuit → la culorile parinte → respectiv la culorile copiilor.

    @pixelgrade/everybody va invit sa nu ezitati sa va spuneti parerea, fiecare avand o alta perspectiva utila in evolutia issue-ului.

    [Type] Feature Back-end 3 points 
    opened by georgeolaru 7
  • [Font Palettes] Add support for font size boost value in fonts logic

    [Font Palettes] Add support for font size boost value in fonts logic

    We want to be able to define both at master font control level (e.g., for sm_font_primary) and at font interval level, a font size boost coefficient.

    This will be a float value that will get multiplied with the font size value in the font palettes calculations. Most of the time this value will be between zero and two (e.g., 0.8, 1.2, 1.5). The default value will be 1, meaning no effect.

    We will use the font_size_boost key in the fonts logic configuration.

    [Type] Feature 
    opened by vladolaru 5
  • Cloud Font Palettes Library

    Cloud Font Palettes Library

    Hey,

    I added some palettes to the cloud library for testing purposes. However, the font palettes aren't very consistent at the moment.

    1. First, there are the palettes used for Rosa2, which are a pretty consistent group. But at the moment the local fonts functionality doesn't exist. They work in Rosa2 because the fonts are registered through Customify by the theme.
    2. Second, we have the font palettes for Gema, Hive, Patch and Julia which are again quite a consistent group, but the main difference is they have only three main fonts, lacking the accent font.
    3. Third, I managed to find some initial implementations for the font palettes for themes, like Fargo, Osteria, Felt, Pile, Listable, but their final implementation uses a reset functionality without declaring font logic. The main suspect here is Vasco which really can't be obtained using any fonts logic. We certainly could create a reset palette for each theme, the question that remains if any of the salvaged palettes above would be available for any other themes considering the majority of these palettes also don't have an accent font assigned.

    @georgeolaru, @vladolaru any though on what would be the next steps to make?

    [Type] Discussion 
    opened by razwan 5
  • [Style Manager] External Theme Config System For Free Themes

    [Style Manager] External Theme Config System For Free Themes

    Fiindca vrem sa confirmam logica celor trei sectiuni din paleta de culori, provocarea ar fi sa o facem chiar pe o tema gratuita → as merge pe Twenty Sixteen care macar are o culoare.

    @vladolaru cum zici sa procedam? E vreo sansa sa avem fisierul de customizare direct in Customify undeva gen /themes/twentysixteen.php sau mai bine sa o facem intai direct in tema?

    2 points Back-end 
    opened by georgeolaru 5
  • Add Development Mode Option to Improve Testing

    Add Development Mode Option to Improve Testing

    Obiectivul principal este sa putem testa default-urile din tema, atat in procesul de development, de configurare si editare a optiunilor, cat si in momentul in care vrem sa testam tema, cand ne jucam cu optiunile si vrem sa revenim la cum arata ea initial.

    Avem momentan o serie de butoane in Settings → Customify care ofera posibilitatea de a reseta anumite optiuni (eg. Colors) insa sistemul actual nu suporta resetarea tutoror optiunilor (eg. Fonts).

    Obiective sau ce urmarim cu acest feature:

    • Sa creăm un mediu solid de testare a optiunilor default din Customify, configurate la nivel de tema
    • Sa simplifice procesul de testare si sa nu introduca in nou layer de chestionare in cazul unui issue (eg. Te-ai asigurat ca ai resetat optiunile?)
    • Sa poata fi dezactivat usor pentru a te aseza mai concret in "pielea" clientului
    • Sa fie disponibil mai mult pentru noi, ca echipa de development, si mai putin pentru clienti (doar in situatia in care gasim ca le este si lor util asa ceva — eg. un buton de Reset).

    O idee pe care am discutat-o cu @vladolaru ar fi sa avem un "Development Mode" care sa ofere cadrul necesar testarii optiunilor default din tema si sa ne ajute la nivel de productivitate in development. Astfel tot site-ul sa fie intr-un mod de "reset continuu", in care optiunile se pot schimba in Customizer, dar nu se salveaza si se "pierd" la refresh. customify - dev mode


    O alta idee ar fi sa avem o notificare in cazul in care optiunile actuale sunt diferite fata de cele default si sa oferim un buton de Reset pe care sa-l folosim doar in momentul in care dorim asta: image


    @pixelgrade/everybody Fiecare dintre noi cred ca a avut de-a face cu problema default-urilor diferite, cu faptul ca faceam o instalare noua doar ca sa testam defaulturile s.a.m.d. Va invit sa va spuneti parerea si sa incercam sa gasim o solutie care rezolva cat mai mult din cazurile de mai sus.

    [Status] Needs Feedback [Type] Feature Back-end 
    opened by georgeolaru 5
  • PHP 5.3.29 and Customify 1.3.0 Issues

    PHP 5.3.29 and Customify 1.3.0 Issues

    Rosa (Help Scout) #2

    Your rosa theme is broke by newest customfy update 2.71 works 3 breaks all most all of the CSS user additions to the theme

    Pile (Freshdesk) Listable

    Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ')' in /home4/techstep/public_html/gemmahenderson.com/wp-content/plugins/customify/features/customizer/controls/class-Pix_Customize_Font_Control.php on line 431

    So I can't access the Customizer.

    cc @pixelgrade/heroes cred ca ar ajuta un mesaj canned si marcate ticketele cu tag-ul customify-1-3-0 ca sa putem reveni la ei dupa.

    opened by georgeolaru 5
  • Add Extended Typography Fields

    Add Extended Typography Fields

    It would be nice if we can bring together in one "extended" field the following typography related options:

    font-family / font-weight / font-subset font-size / line-height letter-spacing / text-transform

    This way we can reuse them more consistently.

    I created an example and how this field configuration might look like:

    // Example of an Extended Typography field
    'extended_typography_example' => array(
        'type'        => 'font',
        'label'       => esc_html__( 'Item Title Font', 'noah' ),
        'desc'        => esc_html__( '', 'noah' ),
        'selector'    => '.c-card h2',
    
        // Set the defaults
        'default'   => array(
            'font-family' => 'Arca Majora',
            'font-weight' => '700',
            'font-subset' => 'latin-ext,cyrillic',
            'font-size'   => 24,
            'line-height' => 1.5,
            'letter-spacing' => 1,
            'text-transform' => 'none'
        ),
    
        // Sub Fields Configuration (optional)
        'fields'    => array(
            'font-family'   => array(
                'recommended' => $recommended_headings_fonts,   // List of recommended fonts defined by theme 
            ),
            'font-weight'   => array(
                'load_all_weights' => true,                     // False by default (used for Body fonts)
            ),
            'font-size'     => array(                           // Set custom values for a range slider
                'min'          => 8,
                'max'          => 20,
                'step'         => 1,
                'unit'         => 'px',
            ),
            'line-height'    => array(0, 2, 0.1, ''),           // Short-hand version
            'letter-spacing' => array(-5, 20, 1, 'em'),
            'text-transform'     => false                           // Disable sub-field (False by default) 
        )
    ),
    
    opened by georgeolaru 5
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump terser from 4.8.0 to 4.8.1

    Bump terser from 4.8.0 to 4.8.1

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump copy-props from 2.0.4 to 2.0.5

    Bump copy-props from 2.0.4 to 2.0.5

    Bumps copy-props from 2.0.4 to 2.0.5.

    Release notes

    Sourced from copy-props's releases.

    2.0.5

    Fix

    • Avoids prototype pollution (#7)

    Doc

    • Update license years.
    • Transfer ownership to Gulp Team (#6)

    Build

    • Update dependencies: each-props (>=1.3.2), is-plain-object (>=5.0.0).

    Test

    • Expand test versions to v11〜v14.
    Changelog

    Sourced from copy-props's changelog.

    Changelog

    3.0.1 (2021-10-31)

    Bug Fixes

    • ci: Rename prettierignore typo & avoid formatting web (192badf)
    • Update dependencies (ba8a51c)

    3.0.0 (2021-09-25)

    ⚠ BREAKING CHANGES

    • Normalize repository, dropping node <10.13 support (#8)

    Miscellaneous Chores

    • Normalize repository, dropping node <10.13 support (#8) (85b1165)
    Commits
    • 40b7974 2.0.5
    • 2c738f5 Fix: Avoids prototype pollution (#7)
    • 4cac863 Merge: Transfer ownership to Gulp Team (#6)
    • 54a791d Doc: Transfer ownership to Gulp Team
    • 196fc9e Merge: Update dependencies and expand ci test versions (#5)
    • e89907f Test: Update npm to v4 when nodejs is v5 because of npm install error.
    • e970322 Test: Run coveralls when nodejs >= 6 because of its supports
    • 063e534 Test: Add nodejs v11-v14 into ci test versions
    • 72270af Doc: Update license years
    • f60b928 Build: Update versions of dependencies
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump ajv from 6.12.0 to 6.12.6

    Bump ajv from 6.12.0 to 6.12.6

    Bumps ajv from 6.12.0 to 6.12.6.

    Release notes

    Sourced from ajv's releases.

    v6.12.6

    Fix performance issue of "url" format.

    v6.12.5

    Fix uri scheme validation (@​ChALkeR). Fix boolean schemas with strictKeywords option (#1270)

    v6.12.4

    Fix: coercion of one-item arrays to scalar that should fail validation (failing example).

    v6.12.3

    Pass schema object to processCode function Option for strictNumbers (@​issacgerges, #1128) Fixed vulnerability related to untrusted schemas (CVE-2020-15366)

    v6.12.2

    Removed post-install script

    v6.12.1

    Docs and dependency updates

    Commits
    • fe59143 6.12.6
    • d580d3e Merge pull request #1298 from ajv-validator/fix-url
    • fd36389 fix: regular expression for "url" format
    • 490e34c docs: link to v7-beta branch
    • 9cd93a1 docs: note about v7 in readme
    • 877d286 Merge pull request #1262 from b4h0-c4t/refactor-opt-object-type
    • f1c8e45 6.12.5
    • 764035e Merge branch 'ChALkeR-chalker/fix-comma'
    • 3798160 Merge branch 'chalker/fix-comma' of git://github.com/ChALkeR/ajv into ChALkeR...
    • a3c7eba Merge branch 'refactor-opt-object-type' of github.com:b4h0-c4t/ajv into refac...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Color palette not applying on the Categories background color - Patch

    Color palette not applying on the Categories background color - Patch

    The color palette works in the Customizer panel with Live preview but when I publish and visit the website, the categories have the default yellow background color.

    On top of this, hovering over the menu items triggers a weird yellow flash - it seems the background color does not change for the nav-menu either.

    https://user-images.githubusercontent.com/53944294/150987001-459bd627-420a-44d2-826b-97f097cd5622.mp4

    I'm using WP 5.8.3, Patch 1.6.1, and Customify 2.10.4

    [Type] Bug 
    opened by andreiungurianu 0
Releases(2.10.3)
Owner
Pixelgrade
Our mission is to support people who want to make an impact in their communities.
Pixelgrade
Divide / Split your WordPress Blog visitors into 4 links by using Re-skinning URL splitter

Re-skinning URL splitter Tool Divide / Split your Wordpress Blog visitors into 4 links by using Re-skinning URL splitter Re-skinning URL Splitter Feat

Mohammed cha 72 Nov 30, 2022
Add subtitles into your WordPress posts, pages, custom post types, and themes. No coding required.

Add subtitles into your WordPress posts, pages, custom post types, and themes. No coding required. Simply activate Subtitles and you're ready to go.

We Cobble 117 Dec 31, 2022
Zero-Config plugin to disable FLoC in your WordPress Website.

Disable FLoC by WP Munich A simple zero-config plugin to opt-out of Google FLoC. This plugin is made with love and brought to you by the folks of WP M

Luehrsen // Heinrich 9 Jun 1, 2022
(Hard) Fork of WordPress Plugin Boilerplate, actively taking PRs and actively maintained. Following WordPress Coding Standards. With more features than the original.

Better WordPress Plugin Boilerplate This is a Hard Fork of the original WordPress Plugin Boilerplate. The Better WordPress Plugin Boilerplate actively

Beda Schmid 46 Dec 7, 2022
Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project.

Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project. Only add few database tables with prefixes, not affect your existing database tables. Support Laravel 7.x & Laravel 6.x & Laravel 5.x & MySql & PostgreSql - Amila Laravel CMS

Alex Zeng 96 Sep 6, 2022
Best logging support into Nette Framework (@nette)

Website ?? contributte.org | Contact ????‍?? f3l1x.io | Twitter ?? @contributte Usage To install the latest version of contributte/monolog use Compose

Contributte 21 Dec 1, 2022
Drag and Drop Website Builder and CMS with E-commerce

Microweber: Drag-and-Drop CMS Current version: 1.2 running on Laravel 8! Download | What is Microweber? | Core features of Microweber | Requirements |

Microweber 2.6k Dec 31, 2022
website for sharing media and videos like youtube

CodeXLine-Media Application Laravel media application you can use that as startup to your next app if you will work with videos and media processing ?

Mahmoud shahin 6 Jun 19, 2022
A restaurant website using PHP and MySQL. (A group project at Chandigarh University)

tasty-indeed-restaurant-website-php Description A restaurant website using PHP and MySQL for group project at Chandigarh University. Steps to setup Do

Naman Khare 5 Nov 21, 2022
Soosyze CMS is a minimalist content management system in PHP, without database to create and manage your website easily

Soosyze CMS is a content management system without a database. It's easy to create and manage you

Soosyze 41 Jan 6, 2023
Simple analyse the traffic of your OctoberCMS-based website without relying on an external service.

Simple Analytics for OctoberCMS Simple analyse the traffic of your website without relying on an external service. The simple version of this plugin (

Synder.DEV 5 Sep 12, 2021
BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the project website for more information.

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
Technical-test-Website für FridaysForFuture Sigmaringen.

FFF-Sigmaringen-Website Technologies used Google Fonts 'Roboto' Font Normalize.css Prefixfree Material Icons Simple Icons Created by Joshua Hehnle Jan

Joshua 3 Nov 16, 2021
Website compatible with the vmangos database. Based on BlizzCMS.

MadnessCMS Website compatible with the vmangos database. Based on BlizzCMS. Modules admin (Rewritten for Vanilla) armory (Rewritten for Vanilla) bugtr

Vanilla MaNGOS 4 Dec 7, 2022
Bismuth CMS is a ready-made Website CMS based on Yii 2 Advance Template

Bismuth CMS is a ready-made Website CMS based on Yii 2 Advance Template, it's the simplest and easy to set up CMS you may come across.

Hamadas Telebrain 1 Feb 11, 2022
Karaoke website for BEPIC-Fest

BEPIC-Karaoke This is a small project of a karaoke list for the annual BEPIC-Fest at Ulm University. You can add songs, remove them and change the ord

Fabian Lippold 1 May 5, 2022
Lara-zeus sky is simple CMS for your website. it include posts, pages, tags, and categories.

Lara Zeus Sky Lara-zeus sky is simple CMS for your website. it include posts, pages, tags, and categories. small tasks can be time-consuming, let us b

Laravel Zeus 36 Dec 24, 2022
Simple personal website with your Github projects.

Setup Install dependencies: composer install npm install Copy .env.example file to .env: cp .env.example .env Generate application key: php artisan ke

Antonio Sarosi 15 Nov 23, 2022