- WordPress 6.9.4 (es_ES) with Kadence theme - Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto - Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold - Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI) - Plugins: Kadence Blocks, Polylang, Contact Form 7 - Custom CSS with full brand styling and responsive layout - HTTPS enforced via wp-config.php proxy detection
1051 lines
32 KiB
PHP
1051 lines
32 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class managing the header CPT registration.
|
|
*/
|
|
class Kadence_Blocks_Header_CPT_Controller {
|
|
|
|
/**
|
|
* Instance Control
|
|
*
|
|
* @var null
|
|
*/
|
|
private static $instance = null;
|
|
|
|
/**
|
|
* Post type.
|
|
*
|
|
* @var string
|
|
*/
|
|
private $post_type = 'kadence_header';
|
|
|
|
/**
|
|
* Instance Control.
|
|
*/
|
|
public static function get_instance() {
|
|
if ( is_null( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor function.
|
|
*/
|
|
public function __construct() {
|
|
// Register the post type.
|
|
add_action( 'init', array( $this, 'register_post_type' ), 2 );
|
|
add_action( 'init', array( $this, 'register_meta' ), 20 );
|
|
add_filter( 'user_has_cap', array( $this, 'filter_post_type_user_caps' ) );
|
|
|
|
// Define the form post gutenberg template.
|
|
add_action( 'init', array( $this, 'form_gutenberg_template' ) );
|
|
add_filter( 'kadence_post_layout', array( $this, 'header_single_layout' ), 99 );
|
|
add_action( 'enqueue_block_editor_assets', array( $this, 'script_enqueue' ) );
|
|
add_action( 'enqueue_block_assets', array( $this, 'title_styles_enqueue' ) );
|
|
|
|
// Add a post display state for the current header (if choosen in theme).
|
|
add_filter( 'display_post_states', array( $this, 'add_display_post_states' ), 10, 2 );
|
|
add_action( 'admin_bar_menu', array( $this, 'top_headers_admin_bar' ), 100 );
|
|
add_action( 'admin_bar_menu', array( $this, 'add_new_header_to_admin_bar' ), 100 );
|
|
|
|
if( is_admin() && class_exists( 'Kadence_Blocks_Duplicate_Post' ) ) {
|
|
new Kadence_Blocks_Duplicate_Post( $this->post_type );
|
|
}
|
|
if( is_admin() && class_exists( 'Kadence_Blocks_Cpt_Import_Export' ) ) {
|
|
new Kadence_Blocks_Cpt_Import_Export( $this->post_type );
|
|
}
|
|
}
|
|
/**
|
|
* Enqueue Script for Meta options
|
|
*/
|
|
public function script_enqueue() {
|
|
wp_enqueue_script(
|
|
'kb-header-visual-builder',
|
|
KADENCE_BLOCKS_URL . 'dist/header-visual-builder.js',
|
|
array('kadence-components', 'kadence-helpers', 'kadence-icons', 'lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'),
|
|
KADENCE_BLOCKS_VERSION
|
|
);
|
|
}
|
|
/**
|
|
* Enqueue Title Styles
|
|
*/
|
|
public function title_styles_enqueue() {
|
|
|
|
$post_type = get_post_type();
|
|
if ( $this->post_type !== $post_type ) {
|
|
return;
|
|
}
|
|
$output = '.post-type-kadence_header.block-editor-page .editor-styles-wrapper .editor-post-title__block .editor-post-title__input, .post-type-kadence_header .edit-post-visual-editor__post-title-wrapper {
|
|
font-size: 1.5em;
|
|
line-height: 1;
|
|
padding-left: 0.5em;
|
|
padding-right: 0.5em;
|
|
border: 1px solid var(--wp-admin-theme-color);
|
|
margin-top: 0 !important;
|
|
padding-top: 24px;
|
|
padding-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
font-size: 1em;
|
|
position: relative;
|
|
}
|
|
.post-type-kadence_header .editor-styles-wrapper .edit-post-visual-editor__post-title-wrapper:not(.specificity) {
|
|
padding-top: 24px !important;
|
|
padding-bottom: 20px !important;
|
|
margin-bottom: 20px !important;
|
|
margin-top: 0 !important;
|
|
font-size: 1em;
|
|
position: relative;
|
|
}
|
|
.post-type-kadence_header .editor-styles-wrapper .edit-post-visual-editor__post-title-wrapper .editor-post-title:before, .post-type-kadence_header .edit-post-visual-editor__post-title-wrapper:before {
|
|
content: "Title";
|
|
position: absolute;
|
|
top: 0px;
|
|
left: 0;
|
|
font-size: 12px;
|
|
font-weight: normal;
|
|
line-height: 1;
|
|
background: var(--wp-admin-theme-color);
|
|
padding: 4px 6px;
|
|
color: white;
|
|
text-transform: uppercase;
|
|
}
|
|
/* Iframe CSS */
|
|
.post-type-kadence_header .edit-post-visual-editor__post-title-wrapper .editor-post-title {
|
|
font-size: 1.2em;
|
|
font-weight: 500;
|
|
line-height: 1;
|
|
margin: 0;
|
|
}
|
|
.post-type-kadence_header .editor-styles-wrapper .edit-post-visual-editor__post-title-wrapper .editor-post-title {
|
|
font-size: 1.2em;
|
|
|
|
font-weight: 500;
|
|
line-height: 1;
|
|
}
|
|
.post-type-kadence_header .editor-styles-wrapper {
|
|
padding:8px;
|
|
margin: 0;
|
|
}
|
|
.post-type-kadence_header .is-root-container {
|
|
padding: 0 !important;
|
|
}
|
|
.post-type-kadence_header .is-root-container > .wp-block {max-width: none;} .post-type-kadence_header .is-root-container > .wp-block.wp-block-kadence-header.wp-block-kadence-header.wp-block-kadence-header.wp-block-kadence-header.wp-block-kadence-header.wp-block-kadence-header:not(.specificity) {
|
|
max-width: none !important;
|
|
margin-left: unset !important;
|
|
margin-right: unset !important;
|
|
}.post-type-kadence_header .editor-styles-wrapper .is-root-container > .wp-block {max-width: none;}
|
|
.post-type-kadence_header .editor-styles-wrapper .has-global-padding {
|
|
padding: 0;
|
|
}
|
|
:where(.post-type-kadence_header) :where(.wp-block) {max-width: none;} :where(.post-type-kadence_header) :where(.editor-styles-wrapper) :where(.wp-block) {max-width: none;}';
|
|
wp_register_style( 'kadence_header_css', false );
|
|
wp_enqueue_style( 'kadence_header_css' );
|
|
wp_add_inline_style( 'kadence_header_css', $output );
|
|
}
|
|
/**
|
|
* Renders the header single template on the front end.
|
|
*
|
|
* @param array $layout the layout array.
|
|
*/
|
|
public function header_single_layout( $layout ) {
|
|
global $post;
|
|
if ( is_singular( $this->post_type ) || ( is_admin() && is_object( $post ) && $this->post_type === $post->post_type ) ) {
|
|
$layout = wp_parse_args(
|
|
array(
|
|
'layout' => 'fullwidth',
|
|
'boxed' => 'unboxed',
|
|
'feature' => 'hide',
|
|
'feature_position' => 'above',
|
|
'comments' => 'hide',
|
|
'navigation' => 'hide',
|
|
'title' => 'hide',
|
|
'transparent' => 'disable',
|
|
'sidebar' => 'disable',
|
|
'vpadding' => 'hide',
|
|
'footer' => 'disable',
|
|
'header' => 'disable',
|
|
'content' => 'enable',
|
|
),
|
|
$layout
|
|
);
|
|
}
|
|
|
|
return $layout;
|
|
}
|
|
|
|
/**
|
|
* Add filters for element content output.
|
|
*/
|
|
public function form_gutenberg_template() {
|
|
$post_type_object = get_post_type_object( $this->post_type );
|
|
$post_type_object->template = array(
|
|
array(
|
|
'kadence/header',
|
|
),
|
|
);
|
|
$post_type_object->template_lock = 'all';
|
|
}
|
|
|
|
/**
|
|
* Registers the header post type.
|
|
*/
|
|
public function register_post_type() {
|
|
|
|
register_post_type(
|
|
$this->post_type,
|
|
array(
|
|
'labels' => array(
|
|
'name' => _x( 'Kadence Header', 'post type general name', 'kadence-blocks' ),
|
|
'singular_name' => _x( 'Kadence Header', 'post type singular name', 'kadence-blocks' ),
|
|
'add_new' => __( 'Add New Kadence Header', 'kadence-blocks' ),
|
|
'add_new_item' => __( 'Add New Kadence Header', 'kadence-blocks' ),
|
|
'new_item' => __( 'New Kadence Header', 'kadence-blocks' ),
|
|
'edit_item' => __( 'Edit Kadence Header', 'kadence-blocks' ),
|
|
'view_item' => __( 'View Kadence Header', 'kadence-blocks' ),
|
|
'all_items' => __( 'Headers', 'kadence-blocks' ),
|
|
'search_items' => __( 'Search Kadence Headers', 'kadence-blocks' ),
|
|
'menu_name' => _x( 'Headers', 'admin menu', 'kadence-blocks' ),
|
|
'parent_item_colon' => __( 'Parent Kadence Header:', 'kadence-blocks' ),
|
|
'not_found' => __( 'No Kadence Header found.', 'kadence-blocks' ),
|
|
'not_found_in_trash' => __( 'No Kadence Header found in Trash.', 'kadence-blocks' ),
|
|
'archives' => __( 'Kadence Header archives', 'kadence-blocks' ),
|
|
'insert_into_item' => __( 'Insert into Kadence Header', 'kadence-blocks' ),
|
|
'uploaded_to_this_item' => __( 'Uploaded to this Kadence Header', 'kadence-blocks' ),
|
|
'filter_items_list' => __( 'Filter Kadence Header list', 'kadence-blocks' ),
|
|
'items_list_navigation' => __( 'Kadence Headers list navigation', 'kadence-blocks' ),
|
|
'items_list' => __( 'Kadence Headers list', 'kadence-blocks' ),
|
|
),
|
|
'description' => __( 'Kadence Headers that can be inserted into your site.', 'kadence-blocks' ),
|
|
'public' => false,
|
|
'has_archive' => false,
|
|
'show_ui' => true,
|
|
'show_in_menu' => 'kadence-blocks',
|
|
'show_in_admin_bar' => false,
|
|
'show_in_rest' => true,
|
|
'rewrite' => false,
|
|
'map_meta_cap' => true,
|
|
'capabilities' => array(
|
|
'edit_others_posts' => 'edit_theme_options',
|
|
'delete_posts' => 'edit_theme_options',
|
|
'publish_posts' => 'edit_theme_options',
|
|
'create_posts' => 'edit_theme_options',
|
|
'read_private_posts' => 'edit_theme_options',
|
|
'delete_private_posts' => 'edit_theme_options',
|
|
'delete_published_posts' => 'edit_theme_options',
|
|
'delete_others_posts' => 'edit_theme_options',
|
|
'edit_private_posts' => 'edit_theme_options',
|
|
'edit_published_posts' => 'edit_theme_options',
|
|
'edit_posts' => 'edit_theme_options',
|
|
),
|
|
'rest_base' => $this->post_type,
|
|
'rest_controller_class' => Kadence_Blocks_Header_CPT_Rest_Controller::class,
|
|
'supports' => array(
|
|
'title',
|
|
'editor',
|
|
'revisions',
|
|
'custom-fields'
|
|
),
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check that user can edit these.
|
|
*/
|
|
public function meta_auth_callback() {
|
|
return current_user_can( 'edit_kadence_header' );
|
|
}
|
|
|
|
/**
|
|
* Filters the capabilities of a user to conditionally grant them capabilities for managing headers.
|
|
*
|
|
* Any user who can 'edit_others_pages' will have access to manage headers.
|
|
*
|
|
* @param array $allcaps A user's capabilities.
|
|
*
|
|
* @return array Filtered $allcaps.
|
|
*/
|
|
public function filter_post_type_user_caps( $allcaps ) {
|
|
if ( isset( $allcaps['edit_others_pages'] ) ) {
|
|
$allcaps['edit_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['edit_others_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['edit_published_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['edit_private_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['delete_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['delete_others_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['delete_published_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['delete_private_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['publish_kadence_header'] = $allcaps['edit_others_pages'];
|
|
$allcaps['read_private_kadence_header'] = $allcaps['edit_others_pages'];
|
|
}
|
|
|
|
return $allcaps;
|
|
}
|
|
|
|
public function register_meta() {
|
|
$register_meta = array(
|
|
array(
|
|
'key' => '_kad_header_description',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_typography',
|
|
'type' => 'object',
|
|
'default' => array(
|
|
'color' => '',
|
|
'size' => array( '', '', '' ),
|
|
'sizeType' => 'px',
|
|
'lineHeight' => array( '', '', '' ),
|
|
'lineType' => '',
|
|
'letterSpacing' => array( '', '', '' ),
|
|
'letterType' => 'px',
|
|
'textTransform' => '',
|
|
'family' => '',
|
|
'google' => false,
|
|
'style' => '',
|
|
'weight' => '',
|
|
'variant' => '',
|
|
'subset' => '',
|
|
'loadGoogle' => true,
|
|
),
|
|
'properties' => array(
|
|
'color' => array( 'type' => 'string' ),
|
|
'size' => array( 'type' => 'array' ),
|
|
'sizeType' => array( 'type' => 'string' ),
|
|
'lineHeight' => array( 'type' => 'array' ),
|
|
'lineType' => array( 'type' => 'string' ),
|
|
'letterSpacing' => array( 'type' => 'array' ),
|
|
'letterType' => array( 'type' => 'string' ),
|
|
'textTransform' => array( 'type' => 'string' ),
|
|
'family' => array( 'type' => 'string' ),
|
|
'google' => array( 'type' => 'boolean' ),
|
|
'style' => array( 'type' => 'string' ),
|
|
'weight' => array( 'type' => 'string' ),
|
|
'variant' => array( 'type' => 'string' ),
|
|
'subset' => array( 'type' => 'string' ),
|
|
'loadGoogle' => array( 'type' => 'boolean' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_border',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderTablet',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderMobile',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadius',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusTablet',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusMobile',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderTransparent',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderTransparentTablet',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderTransparentMobile',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusTransparent',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusTransparentTablet',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusTransparentMobile',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusTransparentUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderSticky',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderStickyTablet',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderStickyMobile',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'top' => array( '', 'solid', '' ),
|
|
'right' => array( '', 'solid', '' ),
|
|
'bottom' => array( '', 'solid', '' ),
|
|
'left' => array( '', 'solid', '' ),
|
|
'unit' => 'px',
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'top' => array( 'type' => 'array' ),
|
|
'right' => array( 'type' => 'array' ),
|
|
'bottom' => array( 'type' => 'array' ),
|
|
'left' => array( 'type' => 'array' ),
|
|
'unit' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusSticky',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusStickyTablet',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusStickyMobile',
|
|
'default' => array( 0, 0, 0, 0 ),
|
|
'type' => 'array',
|
|
'children_type' => 'integer',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_borderRadiusStickyUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_background',
|
|
'type' => 'object',
|
|
'default' => array(
|
|
'color' => '',
|
|
'image' => '',
|
|
'imageID' => '',
|
|
'position' => 'center center',
|
|
'size' => 'cover',
|
|
'repeat' => 'no-repeat',
|
|
'attachment' => 'scroll',
|
|
'type' => 'normal',
|
|
'gradient' => '',
|
|
),
|
|
'properties' => array(
|
|
'color' => array( 'type' => 'string' ),
|
|
'image' => array( 'type' => 'string' ),
|
|
'imageID' => array( 'type' => 'string' ),
|
|
'position' => array( 'type' => 'string' ),
|
|
'size' => array( 'type' => 'string' ),
|
|
'repeat' => array( 'type' => 'string' ),
|
|
'attachment' => array( 'type' => 'string' ),
|
|
'type' => array( 'type' => 'string' ),
|
|
'gradient' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_backgroundTransparent',
|
|
'type' => 'object',
|
|
'default' => array(
|
|
'color' => '',
|
|
'image' => '',
|
|
'imageID' => '',
|
|
'position' => 'center center',
|
|
'size' => 'cover',
|
|
'repeat' => 'no-repeat',
|
|
'attachment' => 'scroll',
|
|
'type' => 'normal',
|
|
'gradient' => '',
|
|
),
|
|
'properties' => array(
|
|
'color' => array( 'type' => 'string' ),
|
|
'image' => array( 'type' => 'string' ),
|
|
'imageID' => array( 'type' => 'string' ),
|
|
'position' => array( 'type' => 'string' ),
|
|
'size' => array( 'type' => 'string' ),
|
|
'repeat' => array( 'type' => 'string' ),
|
|
'attachment' => array( 'type' => 'string' ),
|
|
'type' => array( 'type' => 'string' ),
|
|
'gradient' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_backgroundSticky',
|
|
'type' => 'object',
|
|
'default' => array(
|
|
'color' => '',
|
|
'image' => '',
|
|
'imageID' => '',
|
|
'position' => 'center center',
|
|
'size' => 'cover',
|
|
'repeat' => 'no-repeat',
|
|
'attachment' => 'scroll',
|
|
'type' => 'normal',
|
|
'gradient' => '',
|
|
),
|
|
'properties' => array(
|
|
'color' => array( 'type' => 'string' ),
|
|
'image' => array( 'type' => 'string' ),
|
|
'imageID' => array( 'type' => 'string' ),
|
|
'position' => array( 'type' => 'string' ),
|
|
'size' => array( 'type' => 'string' ),
|
|
'repeat' => array( 'type' => 'string' ),
|
|
'attachment' => array( 'type' => 'string' ),
|
|
'type' => array( 'type' => 'string' ),
|
|
'gradient' => array( 'type' => 'string' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_anchor',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_className',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_padding',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_tabletPadding',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_mobilePadding',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_paddingUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_margin',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_tabletMargin',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_mobileMargin',
|
|
'default' => array( '', '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_marginUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_linkColor',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_linkHoverColor',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_height',
|
|
'default' => array( '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_heightUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_width',
|
|
'default' => array( '', '', '' ),
|
|
'type' => 'array',
|
|
'children_type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_widthUnit',
|
|
'default' => 'px',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isSticky',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isStickyTablet',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isStickyMobile',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isTransparent',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isTransparentTablet',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_isTransparentMobile',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_autoTransparentSpacing',
|
|
'default' => false,
|
|
'type' => 'boolean',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_stickySection',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_stickySectionTablet',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_stickySectionMobile',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_shrinkMain',
|
|
'default' => false,
|
|
'type' => 'boolean',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_shrinkMainHeight',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_shrinkMainHeightTablet',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_shrinkMainHeightMobile',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_revealScrollUp',
|
|
'default' => false,
|
|
'type' => 'boolean',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_inheritPostTransparent',
|
|
'default' => true,
|
|
'type' => 'boolean',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_disableTransparentOverrides',
|
|
'type' => 'array',
|
|
'properties' => array(),
|
|
'children_type' => 'string',
|
|
'default' => array(),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_shadow',
|
|
'type' => 'array',
|
|
'children_type' => 'object',
|
|
'default' => array(
|
|
array(
|
|
'enable' => false,
|
|
'color' => '#000000',
|
|
'opacity' => 0.2,
|
|
'spread' => 0,
|
|
'blur' => 2,
|
|
'hOffset' => 0,
|
|
'vOffset' => 1,
|
|
'inset' => false,
|
|
),
|
|
),
|
|
'properties' => array(
|
|
'enable' => array( 'type' => 'boolean' ),
|
|
'color' => array( 'type' => 'string' ),
|
|
'opacity' => array( 'type' => 'number' ),
|
|
'spread' => array( 'type' => 'number' ),
|
|
'blur' => array( 'type' => 'number' ),
|
|
'hOffset' => array( 'type' => 'number' ),
|
|
'vOffset' => array( 'type' => 'number' ),
|
|
'inset' => array( 'type' => 'boolean' ),
|
|
),
|
|
),
|
|
array(
|
|
'key' => '_kad_header_headerTag',
|
|
'default' => '',
|
|
'type' => 'string',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_mobileBreakpoint',
|
|
'type' => 'number',
|
|
'default' => 0,
|
|
),
|
|
array(
|
|
'key' => '_kad_header_pro_backdropFilterType',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
array(
|
|
'key' => '_kad_header_pro_backdropFilterSize',
|
|
'type' => 'number',
|
|
'default' => 1,
|
|
),
|
|
array(
|
|
'key' => '_kad_header_pro_backdropFilterString',
|
|
'type' => 'string',
|
|
'default' => '',
|
|
),
|
|
);
|
|
|
|
foreach ( $register_meta as $meta ) {
|
|
|
|
if ( 'string' === $meta['type'] ) {
|
|
$show_in_rest = true;
|
|
} elseif ( $meta['type'] === 'array' ) {
|
|
$show_in_rest = array(
|
|
'schema' => array(
|
|
'type' => $meta['type'],
|
|
'items' => array(
|
|
'type' => $meta['children_type']
|
|
),
|
|
),
|
|
);
|
|
|
|
if ( ! empty( $meta['properties'] ) ) {
|
|
$show_in_rest = array_merge_recursive( $show_in_rest, array(
|
|
'schema' => array(
|
|
'items' => array(
|
|
'properties' => $meta['properties']
|
|
)
|
|
)
|
|
) );
|
|
}
|
|
} elseif ( $meta['type'] === 'object' ) {
|
|
$show_in_rest = array(
|
|
'schema' => array(
|
|
'type' => $meta['type'],
|
|
'properties' => $meta['properties']
|
|
),
|
|
);
|
|
}
|
|
|
|
register_post_meta(
|
|
$this->post_type,
|
|
$meta['key'],
|
|
array(
|
|
'single' => true,
|
|
'auth_callback' => array( $this, 'meta_auth_callback' ),
|
|
'type' => $meta['type'],
|
|
'default' => isset( $meta['default'] ) ? $meta['default'] : '',
|
|
'show_in_rest' => $show_in_rest,
|
|
)
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Add a post display state for special pages in the page list table.
|
|
*
|
|
* @param array $post_states An array of post display states.
|
|
* @param WP_Post $post The current post object.
|
|
*/
|
|
public function add_display_post_states( $post_states, $post ) {
|
|
if ( class_exists( 'Kadence\Theme' ) ) {
|
|
if(Kadence\kadence()->option( 'blocks_header' )) {
|
|
$header_id = intval(Kadence\kadence()->option( 'blocks_header_id' ));
|
|
if ( $header_id === $post->ID ) {
|
|
$post_states['kb_post_for_header'] = __( 'Theme Header', 'kadence-blocks' );
|
|
}
|
|
}
|
|
}
|
|
|
|
return $post_states;
|
|
}
|
|
|
|
/**
|
|
* Adds a "Kadence Header" link to the WordPress admin bar "Headers" menu.
|
|
*
|
|
* @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
|
|
*/
|
|
public function top_headers_admin_bar( $wp_admin_bar ) {
|
|
$admin_bar_settings = get_option( 'kadence_blocks_admin_bar_settings' );
|
|
$show_headers_in_admin_bar = isset( $admin_bar_settings['show_headers_in_admin_bar'] ) && $admin_bar_settings['show_headers_in_admin_bar'] === 'true' ? true : false;
|
|
|
|
if ( ! current_user_can( 'edit_posts' ) || ! $show_headers_in_admin_bar ) {
|
|
return;
|
|
}
|
|
|
|
$wp_admin_bar->add_node( array(
|
|
'id' => 'kadence-top-headers',
|
|
'title' => __( 'Headers', 'kadence-blocks' ),
|
|
'href' => admin_url( 'edit.php?post_type=kadence_header' ),
|
|
) );
|
|
|
|
// Add the current header from theme customizer (first node)
|
|
if ( class_exists( 'Kadence\Theme' ) ) {
|
|
if ( Kadence\kadence()->option( 'blocks_header' ) ) {
|
|
$header_id = intval( Kadence\kadence()->option( 'blocks_header_id' ) );
|
|
if ( $header_id ) {
|
|
$header_post = get_post( $header_id );
|
|
if ( $header_post && 'kadence_header' === $header_post->post_type ) {
|
|
// translators: %s is the header title
|
|
$wp_admin_bar->add_node( array(
|
|
'id' => 'kadence-header-current',
|
|
'title' => sprintf( __( '%s (Theme)', 'kadence-blocks' ), $header_post->post_title ),
|
|
'parent' => 'kadence-top-headers',
|
|
'href' => get_edit_post_link( $header_id ),
|
|
) );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Add the 5 most recent header posts
|
|
$recent_headers = get_posts( array(
|
|
'post_type' => 'kadence_header',
|
|
'post_status' => 'publish',
|
|
'posts_per_page' => 5,
|
|
'orderby' => 'date',
|
|
'order' => 'DESC',
|
|
) );
|
|
|
|
foreach ( $recent_headers as $header ) {
|
|
$wp_admin_bar->add_node( array(
|
|
'id' => 'kadence-header-recent-' . $header->ID,
|
|
'title' => $header->post_title,
|
|
'parent' => 'kadence-top-headers',
|
|
'href' => get_edit_post_link( $header->ID ),
|
|
) );
|
|
}
|
|
|
|
$wp_admin_bar->add_node( array(
|
|
'id' => 'kadence-header-add-new',
|
|
'title' => __( 'Add New', 'kadence-blocks' ),
|
|
'parent' => 'kadence-top-headers',
|
|
'href' => admin_url( 'post-new.php?post_type=kadence_header' ),
|
|
) );
|
|
}
|
|
|
|
/**
|
|
* Adds a "Kadence Header" link to the WordPress admin bar "New" dropdown menu.
|
|
*
|
|
* @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
|
|
*/
|
|
public function add_new_header_to_admin_bar( $wp_admin_bar ) {
|
|
$admin_bar_settings = get_option( 'kadence_blocks_admin_bar_settings' );
|
|
$show_headers_in_admin_bar = isset( $admin_bar_settings['show_headers_in_admin_bar'] ) && $admin_bar_settings['show_headers_in_admin_bar'] === 'true' ? true : false;
|
|
|
|
// Only show for users who can create headers
|
|
if ( ! current_user_can( 'edit_theme_options' ) || ! $show_headers_in_admin_bar ) {
|
|
return;
|
|
}
|
|
|
|
$wp_admin_bar->add_node( array(
|
|
'id' => 'new-kadence-header',
|
|
'title' => __( 'Header', 'kadence-blocks' ),
|
|
'parent' => 'new-content',
|
|
'href' => admin_url( 'post-new.php?post_type=kadence_header' ),
|
|
) );
|
|
}
|
|
}
|
|
|
|
Kadence_Blocks_Header_CPT_Controller::get_instance();
|