updated plugin GP Premium
version 2.0.3
This commit is contained in:
Binary file not shown.
After Width: | Height: | Size: 138 B |
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
@ -1,4 +1,4 @@
|
||||
jQuery( document ).ready( function( $ ) {
|
||||
jQuery( function( $ ) {
|
||||
$( '.post-type-gp_elements .page-title-action:not(.legacy-button)' ).on( 'click', function( e ) {
|
||||
e.preventDefault();
|
||||
|
||||
@ -10,4 +10,9 @@ jQuery( document ).ready( function( $ ) {
|
||||
|
||||
$( '.choose-element-type-parent' ).hide();
|
||||
} );
|
||||
|
||||
// Don't allow Elements to quick edit parents.
|
||||
$( '.inline-edit-gp_elements select#post_parent, .inline-edit-gp_elements .inline-edit-menu-order-input, .bulk-edit-gp_elements select#post_parent' ).each( function() {
|
||||
$( this ).closest( 'label' ).remove();
|
||||
} );
|
||||
} );
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 200 B |
@ -188,18 +188,25 @@ ul.element-metabox-tabs li.is-selected a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.element-settings.header table[data-tab="hero"],
|
||||
.element-settings.header:not(.has-page-hero) table[data-tab="site-header"],
|
||||
.element-settings.header.has-page-hero table[data-tab="hero"],
|
||||
.element-settings.hook table[data-tab="hook-settings"],
|
||||
.element-settings.block table[data-tab="hook-settings"],
|
||||
.element-settings.layout table[data-tab="sidebars"] {
|
||||
display: table;
|
||||
}
|
||||
|
||||
.element-settings.layout #generate-element-content,
|
||||
.element-settings.block #generate-element-content {
|
||||
.element-settings.header:not(.has-page-hero) #generate-element-content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.element-settings.header:not(.has-page-hero) #generate-element-content + .CodeMirror:not(.gpp-elements-show-codemirror) {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
opacity: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.padding-container {
|
||||
display: flex;
|
||||
}
|
||||
@ -337,7 +344,8 @@ span.tip {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
body:not(.header-element-type) #generate_page_hero_template_tags {
|
||||
body:not(.header-element-type) #generate_page_hero_template_tags,
|
||||
.header-element-type:not(.element-has-page-hero) #generate_page_hero_template_tags {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
jQuery(document).ready(function( $ ) {
|
||||
jQuery( function( $ ) {
|
||||
if ( $( '.element-settings' ).hasClass( 'header' ) || $( '.element-settings' ).hasClass( 'hook' ) ) {
|
||||
$( function() {
|
||||
if ( elements.settings) {
|
||||
wp.codeEditor.initialize( "generate-element-content", elements.settings );
|
||||
if ( elements.settings ) {
|
||||
wp.codeEditor.initialize( 'generate-element-content', elements.settings );
|
||||
}
|
||||
} );
|
||||
}
|
||||
@ -51,7 +51,7 @@ jQuery(document).ready(function( $ ) {
|
||||
} );
|
||||
|
||||
$( '#_generate_hook' ).select2( {
|
||||
width: '100%'
|
||||
width: '100%',
|
||||
} );
|
||||
|
||||
$( '.element-metabox-tabs li' ).on( 'click', function() {
|
||||
@ -63,15 +63,17 @@ jQuery(document).ready(function( $ ) {
|
||||
$( '.generate-elements-settings' ).hide();
|
||||
$( '.generate-elements-settings[data-tab="' + tab + '"]' ).show();
|
||||
|
||||
if ( $( '.element-settings' ).hasClass( 'block' ) & 'hook-settings' === tab ) {
|
||||
if ( $( '.element-settings' ).hasClass( 'block' ) && 'hook-settings' === tab ) {
|
||||
$( '.generate-elements-settings[data-tab="display-rules"]' ).show();
|
||||
}
|
||||
|
||||
if ( $( '.element-settings' ).hasClass( 'header' ) ) {
|
||||
if ( 'hero' !== tab ) {
|
||||
$( '#generate-element-content' ).next( '.CodeMirror' ).hide();
|
||||
$( '#generate-element-content' ).next( '.CodeMirror' ).removeClass( 'gpp-elements-show-codemirror' );
|
||||
$( '#generate_page_hero_template_tags' ).css( 'display', '' );
|
||||
} else {
|
||||
$( '#generate-element-content' ).next( '.CodeMirror' ).show();
|
||||
$( '#generate-element-content' ).next( '.CodeMirror' ).addClass( 'gpp-elements-show-codemirror' );
|
||||
$( '#generate_page_hero_template_tags' ).css( 'display', 'block' );
|
||||
}
|
||||
}
|
||||
} );
|
||||
@ -82,7 +84,7 @@ jQuery(document).ready(function( $ ) {
|
||||
selects.each( function() {
|
||||
var select = $( this ),
|
||||
config = {
|
||||
width: 'style'
|
||||
width: 'style',
|
||||
};
|
||||
|
||||
select.select2( config );
|
||||
@ -95,82 +97,70 @@ jQuery(document).ready(function( $ ) {
|
||||
$( '.add-condition' ).on( 'click', function() {
|
||||
var _this = $( this );
|
||||
|
||||
var row = _this.closest( '.generate-element-row-content' ).find( '.condition.hidden.screen-reader-text' ).clone(true);
|
||||
var row = _this.closest( '.generate-element-row-content' ).find( '.condition.hidden.screen-reader-text' ).clone( true );
|
||||
row.removeClass( 'hidden screen-reader-text' );
|
||||
row.insertBefore( _this.closest( '.generate-element-row-content' ).find( '.condition:last' ) );
|
||||
|
||||
select2Init();
|
||||
|
||||
return false;
|
||||
});
|
||||
} );
|
||||
|
||||
$( '.remove-condition' ).on('click', function() {
|
||||
$(this).parents('.condition').remove();
|
||||
$( '.remove-condition' ).on( 'click', function() {
|
||||
$( this ).parents( '.condition' ).remove();
|
||||
|
||||
select2Init();
|
||||
|
||||
return false;
|
||||
});
|
||||
} );
|
||||
|
||||
var get_location_objects = function( _this, onload = false ) {
|
||||
var select = _this,
|
||||
parent = select.parent(),
|
||||
location = select.val(),
|
||||
object_select = parent.find( '.condition-object-select' ),
|
||||
locationString = '',
|
||||
actionType = 'terms';
|
||||
|
||||
if ( '' == location ) {
|
||||
var getLocationObjects = function( _this, onload = false, data = '' ) {
|
||||
var select = _this,
|
||||
parent = select.parent(),
|
||||
location = select.val(),
|
||||
objectSelect = parent.find( '.condition-object-select' ),
|
||||
locationType = '',
|
||||
actionType = 'terms';
|
||||
|
||||
if ( '' === location ) {
|
||||
parent.removeClass( 'generate-elements-rule-objects-visible' );
|
||||
select.closest( '.generate-element-row-content' ).find( '.generate-element-row-loading' ).remove();
|
||||
|
||||
} else {
|
||||
if ( location.indexOf( ':taxonomy:' ) > 0 ) {
|
||||
var locationType = 'taxonomy';
|
||||
locationType = 'taxonomy';
|
||||
} else {
|
||||
var locationType = location.substr( 0, location.indexOf( ':' ) );
|
||||
locationType = location.substr( 0, location.indexOf( ':' ) );
|
||||
}
|
||||
|
||||
var locationID = location.substr( location.lastIndexOf( ':' ) + 1 );
|
||||
|
||||
locationString = location;
|
||||
|
||||
if ( 'taxonomy' == locationType || 'post' == locationType ) {
|
||||
|
||||
if ( 'taxonomy' === locationType || 'post' === locationType ) {
|
||||
if ( ! ( '.generate-element-row-loading' ).length ) {
|
||||
select.closest( '.generate-element-row-content' ).prepend( '<div class="generate-element-row-loading"></div>' );
|
||||
}
|
||||
|
||||
if ( 'post' == locationType ) {
|
||||
if ( 'taxonomy' == locationType ) {
|
||||
actionType = 'terms';
|
||||
} else {
|
||||
actionType = 'posts';
|
||||
}
|
||||
}
|
||||
|
||||
$.post( ajaxurl, {
|
||||
action : 'generate_elements_get_location_' + actionType,
|
||||
id : locationID,
|
||||
nonce : elements.nonce
|
||||
}, function( response ) {
|
||||
response = $.parseJSON( response );
|
||||
var objects = response.objects;
|
||||
var fillObjects = function( response ) {
|
||||
var objects = response[ locationID ].objects;
|
||||
|
||||
var blank = {
|
||||
'id': '',
|
||||
'name': 'All ' + response.label,
|
||||
id: '',
|
||||
name: 'All ' + response[ locationID ].label,
|
||||
};
|
||||
|
||||
if ( location.indexOf( ':taxonomy:' ) > 0 ) {
|
||||
blank.name = elements.choose;
|
||||
}
|
||||
|
||||
objects.unshift( blank );
|
||||
object_select.empty();
|
||||
objectSelect.empty();
|
||||
|
||||
objectSelect.append( $( '<option>', {
|
||||
value: blank.id,
|
||||
label: blank.name,
|
||||
text: blank.name,
|
||||
} ) );
|
||||
|
||||
$.each( objects, function( key, value ) {
|
||||
object_select.append( $( '<option>', {
|
||||
objectSelect.append( $( '<option>', {
|
||||
value: value.id,
|
||||
label: elements.showID && value.id ? value.name + ': ' + value.id : value.name,
|
||||
text: elements.showID && value.id ? value.name + ': ' + value.id : value.name,
|
||||
@ -180,38 +170,93 @@ jQuery(document).ready(function( $ ) {
|
||||
parent.addClass( 'generate-elements-rule-objects-visible' );
|
||||
|
||||
if ( onload ) {
|
||||
object_select.val( object_select.attr( 'data-saved-value' ) );
|
||||
objectSelect.val( objectSelect.attr( 'data-saved-value' ) );
|
||||
}
|
||||
|
||||
select.closest( '.generate-element-row-content' ).find( '.generate-element-row-loading' ).remove();
|
||||
} );
|
||||
};
|
||||
|
||||
if ( data && onload ) {
|
||||
// Use pre-fetched data if we just loaded the page.
|
||||
fillObjects( data );
|
||||
} else {
|
||||
if ( 'post' === locationType ) {
|
||||
if ( 'taxonomy' === locationType ) {
|
||||
actionType = 'terms';
|
||||
} else {
|
||||
actionType = 'posts';
|
||||
}
|
||||
}
|
||||
|
||||
$.post( ajaxurl, {
|
||||
action: 'generate_elements_get_location_' + actionType,
|
||||
id: locationID,
|
||||
nonce: elements.nonce,
|
||||
}, function( response ) {
|
||||
response = JSON.parse( response );
|
||||
fillObjects( response );
|
||||
} );
|
||||
}
|
||||
} else {
|
||||
parent.removeClass( 'generate-elements-rule-objects-visible' );
|
||||
select.closest( '.generate-element-row-content' ).find( '.generate-element-row-loading' ).remove();
|
||||
object_select.empty().append( '<option value="0"></option>' );
|
||||
object_select.val( '0' );
|
||||
objectSelect.empty().append( '<option value="0"></option>' );
|
||||
objectSelect.val( '0' );
|
||||
}
|
||||
|
||||
//remove.show();
|
||||
}
|
||||
};
|
||||
|
||||
$( '.condition select.condition-select' ).on( 'change', function() {
|
||||
get_location_objects( $( this ) );
|
||||
getLocationObjects( $( this ) );
|
||||
|
||||
$( '.elements-no-location-error' ).hide();
|
||||
} );
|
||||
|
||||
var postObjects = [];
|
||||
var termObjects = [];
|
||||
|
||||
$( '.generate-elements-rule-objects-visible' ).each( function() {
|
||||
var _this = $( this ),
|
||||
select = _this.find( 'select.condition-select' );
|
||||
select = _this.find( 'select.condition-select' ),
|
||||
location = select.val(),
|
||||
locationID = location.substr( location.lastIndexOf( ':' ) + 1 ),
|
||||
locationType = '';
|
||||
|
||||
$( '<div class="generate-element-row-loading"></div>' ).insertBefore( _this );
|
||||
if ( location.indexOf( ':taxonomy:' ) > 0 ) {
|
||||
locationType = 'taxonomy';
|
||||
} else {
|
||||
locationType = location.substr( 0, location.indexOf( ':' ) );
|
||||
}
|
||||
|
||||
get_location_objects( select, true );
|
||||
if ( 'post' === locationType ) {
|
||||
if ( ! postObjects.includes( locationID ) ) {
|
||||
postObjects.push( locationID );
|
||||
}
|
||||
} else if ( 'taxonomy' === locationType && ! termObjects.includes( locationID ) ) {
|
||||
termObjects.push( locationID );
|
||||
}
|
||||
} );
|
||||
|
||||
if ( postObjects.length > 0 || termObjects.length > 0 ) {
|
||||
$.post( ajaxurl, {
|
||||
action: 'generate_elements_get_location_objects',
|
||||
posts: postObjects,
|
||||
terms: termObjects,
|
||||
nonce: elements.nonce,
|
||||
}, function( response ) {
|
||||
response = JSON.parse( response );
|
||||
|
||||
$( '.generate-elements-rule-objects-visible' ).each( function() {
|
||||
var _this = $( this ),
|
||||
select = _this.find( 'select.condition-select' );
|
||||
|
||||
$( '<div class="generate-element-row-loading"></div>' ).insertBefore( _this );
|
||||
|
||||
getLocationObjects( select, true, response );
|
||||
} );
|
||||
} );
|
||||
}
|
||||
|
||||
$( '.set-featured-image a, .change-featured-image a:not(.remove-image)' ).on( 'click', function( event ) {
|
||||
event.preventDefault();
|
||||
|
||||
@ -237,7 +282,7 @@ jQuery(document).ready(function( $ ) {
|
||||
$( '.change-featured-image' ).hide();
|
||||
$( '.image-preview' ).empty();
|
||||
return false;
|
||||
});
|
||||
} );
|
||||
|
||||
$( '.remove-image' ).on( 'click', function( e ) {
|
||||
e.preventDefault();
|
||||
@ -257,12 +302,12 @@ jQuery(document).ready(function( $ ) {
|
||||
var frame = wp.media( {
|
||||
title: _this.data( 'title' ),
|
||||
multiple: false,
|
||||
library: { type : _this.data( 'type' ) },
|
||||
button: { text : _this.data( 'insert' ) }
|
||||
library: { type: _this.data( 'type' ) },
|
||||
button: { text: _this.data( 'insert' ) },
|
||||
} );
|
||||
|
||||
frame.on( 'select', function() {
|
||||
var attachment = frame.state().get('selection').first().toJSON();
|
||||
var attachment = frame.state().get( 'selection' ).first().toJSON();
|
||||
|
||||
container.find( '.media-field' ).val( attachment.id );
|
||||
container.find( '.remove-field' ).show();
|
||||
@ -293,11 +338,11 @@ jQuery(document).ready(function( $ ) {
|
||||
$( '.requires-background-image' ).hide();
|
||||
}
|
||||
|
||||
if ( 'featured-image' == _this.val() ) {
|
||||
if ( 'featured-image' === _this.val() ) {
|
||||
$( '.image-text' ).text( elements.fallback_image );
|
||||
}
|
||||
|
||||
if ( 'custom-image' == _this.val() ) {
|
||||
if ( 'custom-image' === _this.val() ) {
|
||||
$( '.image-text' ).text( elements.custom_image );
|
||||
}
|
||||
} );
|
||||
@ -308,10 +353,10 @@ jQuery(document).ready(function( $ ) {
|
||||
|
||||
var _this = $( this ),
|
||||
control = _this.attr( 'data-control' ),
|
||||
control_area = _this.closest( '.generate-element-row-content' );
|
||||
controlArea = _this.closest( '.generate-element-row-content' );
|
||||
|
||||
control_area.find( '.padding-container' ).hide();
|
||||
control_area.find( '.padding-container.' + control ).show();
|
||||
controlArea.find( '.padding-container' ).hide();
|
||||
controlArea.find( '.padding-container.' + control ).show();
|
||||
_this.siblings().removeClass( 'is-selected' );
|
||||
_this.addClass( 'is-selected' );
|
||||
} );
|
||||
|
1758
wp-content/plugins/gp-premium/elements/class-block-elements.php
Normal file
1758
wp-content/plugins/gp-premium/elements/class-block-elements.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -30,6 +30,14 @@ class GeneratePress_Block_Element {
|
||||
*/
|
||||
protected $type = '';
|
||||
|
||||
/**
|
||||
* Has post ancestors.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @var boolean If this post has a parent.
|
||||
*/
|
||||
protected $has_parent = false;
|
||||
|
||||
/**
|
||||
* Kicks it all off.
|
||||
*
|
||||
@ -40,6 +48,18 @@ class GeneratePress_Block_Element {
|
||||
public function __construct( $post_id ) {
|
||||
$this->post_id = $post_id;
|
||||
$this->type = get_post_meta( $post_id, '_generate_block_type', true );
|
||||
$has_content_template_condition = get_post_meta( $post_id, '_generate_post_loop_item_display', true );
|
||||
|
||||
// Take over the $post_id temporarily if this is a child block.
|
||||
// This allows us to inherit the parent block Display Rules.
|
||||
if ( 'content-template' === $this->type && $has_content_template_condition ) {
|
||||
$parent_block = wp_get_post_parent_id( $post_id );
|
||||
|
||||
if ( ! empty( $parent_block ) ) {
|
||||
$this->has_parent = true;
|
||||
$post_id = $parent_block;
|
||||
}
|
||||
}
|
||||
|
||||
$display_conditions = get_post_meta( $post_id, '_generate_element_display_conditions', true ) ? get_post_meta( $post_id, '_generate_element_display_conditions', true ) : array();
|
||||
$exclude_conditions = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) ? get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) : array();
|
||||
@ -55,7 +75,31 @@ class GeneratePress_Block_Element {
|
||||
$post_id
|
||||
);
|
||||
|
||||
/**
|
||||
* Simplify filter name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
$display = apply_filters(
|
||||
'generate_element_display',
|
||||
$display,
|
||||
$post_id
|
||||
);
|
||||
|
||||
// Restore our actual post ID if it's been changed.
|
||||
if ( 'content-template' === $this->type && $has_content_template_condition ) {
|
||||
$post_id = $this->post_id;
|
||||
}
|
||||
|
||||
if ( $display ) {
|
||||
global $generate_elements;
|
||||
|
||||
$generate_elements[ $post_id ] = array(
|
||||
'is_block_element' => true,
|
||||
'type' => $this->type,
|
||||
'id' => $post_id,
|
||||
);
|
||||
|
||||
$hook = get_post_meta( $post_id, '_generate_hook', true );
|
||||
$custom_hook = get_post_meta( $post_id, '_generate_custom_hook', true );
|
||||
$priority = get_post_meta( $post_id, '_generate_hook_priority', true );
|
||||
@ -80,12 +124,36 @@ class GeneratePress_Block_Element {
|
||||
case 'left-sidebar':
|
||||
$hook = 'generate_before_left_sidebar_content';
|
||||
break;
|
||||
|
||||
case 'content-template':
|
||||
$hook = 'generate_before_do_template_part';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( 'custom' === $hook && $custom_hook ) {
|
||||
$hook = $custom_hook;
|
||||
}
|
||||
|
||||
if ( 'post-meta-template' === $this->type ) {
|
||||
$post_meta_location = get_post_meta( $post_id, '_generate_post_meta_location', true );
|
||||
|
||||
if ( '' === $post_meta_location || 'after-post-title' === $post_meta_location ) {
|
||||
$hook = 'generate_after_entry_title';
|
||||
|
||||
if ( is_page() ) {
|
||||
$hook = 'generate_after_page_title';
|
||||
}
|
||||
} elseif ( 'before-post-title' === $post_meta_location ) {
|
||||
$hook = 'generate_before_entry_title';
|
||||
|
||||
if ( is_page() ) {
|
||||
$hook = 'generate_before_page_title';
|
||||
}
|
||||
} elseif ( 'after-content' === $post_meta_location ) {
|
||||
$hook = 'generate_after_content';
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! $hook ) {
|
||||
return;
|
||||
}
|
||||
@ -98,16 +166,27 @@ class GeneratePress_Block_Element {
|
||||
remove_action( 'generate_footer', 'generate_construct_footer' );
|
||||
}
|
||||
|
||||
add_action( esc_attr( $hook ), array( $this, 'build_hook' ), absint( $priority ) );
|
||||
|
||||
if ( 'right-sidebar' === $this->type || 'left-sidebar' === $this->type ) {
|
||||
add_filter( 'sidebars_widgets', array( $this, 'remove_sidebar_widgets' ) );
|
||||
add_filter( 'generate_show_default_sidebar_widgets', '__return_false' );
|
||||
if ( 'content-template' === $this->type && ! $this->has_parent ) {
|
||||
add_filter( 'generate_do_template_part', array( $this, 'do_template_part' ) );
|
||||
}
|
||||
|
||||
add_action( 'wp', array( $this, 'remove_elements' ), 100 );
|
||||
add_action( esc_attr( $hook ), array( $this, 'build_hook' ), absint( $priority ) );
|
||||
add_filter( 'generateblocks_do_content', array( $this, 'do_block_content' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable our post loop items if needed.
|
||||
*
|
||||
* @param boolean $do Whether to display the default post loop item or not.
|
||||
*/
|
||||
public function do_template_part( $do ) {
|
||||
if ( GeneratePress_Elements_Helper::should_render_content_template( $this->post_id ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $do;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -152,12 +231,185 @@ class GeneratePress_Block_Element {
|
||||
return $widgets;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove existing elements.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public function remove_elements() {
|
||||
if ( 'right-sidebar' === $this->type || 'left-sidebar' === $this->type ) {
|
||||
add_filter( 'sidebars_widgets', array( $this, 'remove_sidebar_widgets' ) );
|
||||
add_filter( 'generate_show_default_sidebar_widgets', '__return_false' );
|
||||
}
|
||||
|
||||
if ( 'page-hero' === $this->type ) {
|
||||
$disable_title = get_post_meta( $this->post_id, '_generate_disable_title', true );
|
||||
$disable_featured_image = get_post_meta( $this->post_id, '_generate_disable_featured_image', true );
|
||||
$disable_primary_post_meta = get_post_meta( $this->post_id, '_generate_disable_primary_post_meta', true );
|
||||
|
||||
if ( $disable_title ) {
|
||||
if ( is_singular() ) {
|
||||
add_filter( 'generate_show_title', '__return_false' );
|
||||
}
|
||||
|
||||
remove_action( 'generate_archive_title', 'generate_archive_title' );
|
||||
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
|
||||
}
|
||||
|
||||
if ( $disable_primary_post_meta ) {
|
||||
remove_action( 'generate_after_entry_title', 'generate_post_meta' );
|
||||
}
|
||||
|
||||
if ( $disable_featured_image && is_singular() ) {
|
||||
remove_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' );
|
||||
remove_action( 'generate_before_content', 'generate_blog_single_featured_image' );
|
||||
remove_action( 'generate_after_header', 'generate_blog_single_featured_image' );
|
||||
remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' );
|
||||
remove_action( 'generate_after_header', 'generate_featured_page_header' );
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'post-meta-template' === $this->type ) {
|
||||
$post_meta_location = get_post_meta( $this->post_id, '_generate_post_meta_location', true );
|
||||
$disable_primary_post_meta = get_post_meta( $this->post_id, '_generate_disable_primary_post_meta', true );
|
||||
$disable_secondary_post_meta = get_post_meta( $this->post_id, '_generate_disable_secondary_post_meta', true );
|
||||
|
||||
if ( '' === $post_meta_location || 'after-post-title' === $post_meta_location || 'custom' === $post_meta_location ) {
|
||||
if ( $disable_primary_post_meta ) {
|
||||
remove_action( 'generate_after_entry_title', 'generate_post_meta' );
|
||||
}
|
||||
} elseif ( 'before-post-title' === $post_meta_location || 'custom' === $post_meta_location ) {
|
||||
if ( $disable_primary_post_meta ) {
|
||||
remove_action( 'generate_after_entry_title', 'generate_post_meta' );
|
||||
}
|
||||
} elseif ( 'after-content' === $post_meta_location || 'custom' === $post_meta_location ) {
|
||||
if ( $disable_secondary_post_meta ) {
|
||||
remove_action( 'generate_after_entry_content', 'generate_footer_meta' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'post-navigation-template' === $this->type ) {
|
||||
$disable_post_navigation = get_post_meta( $this->post_id, '_generate_disable_post_navigation', true );
|
||||
|
||||
if ( $disable_post_navigation ) {
|
||||
add_filter( 'generate_footer_entry_meta_items', array( $this, 'disable_post_navigation' ) );
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'archive-navigation-template' === $this->type ) {
|
||||
$disable_archive_navigation = get_post_meta( $this->post_id, '_generate_disable_archive_navigation', true );
|
||||
|
||||
if ( $disable_archive_navigation ) {
|
||||
remove_action( 'generate_after_loop', 'generate_do_post_navigation' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable post navigation.
|
||||
*
|
||||
* @param array $items The post meta items.
|
||||
*/
|
||||
public function disable_post_navigation( $items ) {
|
||||
return array_diff( $items, array( 'post-navigation' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the HTML structure for Page Headers.
|
||||
*
|
||||
* @since 1.11.0
|
||||
*/
|
||||
public function build_hook() {
|
||||
echo GeneratePress_Elements_Helper::build_content( $this->post_id); // phpcs:ignore -- No escaping needed.
|
||||
$post_id = $this->post_id;
|
||||
|
||||
if ( 'content-template' === $this->type ) {
|
||||
// Check for child templates if this isn't already one.
|
||||
if ( ! $this->has_parent ) {
|
||||
$children = get_posts(
|
||||
array(
|
||||
'post_type' => 'gp_elements',
|
||||
'post_parent' => $post_id,
|
||||
'order' => 'ASC',
|
||||
'orderby' => 'menu_order',
|
||||
'no_found_rows' => true,
|
||||
'post_status' => 'publish',
|
||||
'numberposts' => 20,
|
||||
'fields' => 'ids',
|
||||
)
|
||||
);
|
||||
|
||||
if ( ! empty( $children ) ) {
|
||||
// Loop through any child templates and overwrite $post_id if applicable.
|
||||
foreach ( (array) $children as $child_id ) {
|
||||
if ( GeneratePress_Elements_Helper::should_render_content_template( $child_id ) ) {
|
||||
$post_id = $child_id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No children, check if parent should render.
|
||||
if ( ! GeneratePress_Elements_Helper::should_render_content_template( $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No children, check if template should render.
|
||||
if ( ! GeneratePress_Elements_Helper::should_render_content_template( $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't display child elements - they will replace the parent element if applicable.
|
||||
if ( $this->has_parent ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tag_name_value = get_post_meta( $post_id, '_generate_post_loop_item_tagname', true );
|
||||
$use_theme_container = get_post_meta( $post_id, '_generate_use_theme_post_container', true );
|
||||
|
||||
if ( $tag_name_value ) {
|
||||
$tag_name = $tag_name_value;
|
||||
} else {
|
||||
$tag_name = 'article';
|
||||
}
|
||||
|
||||
printf(
|
||||
'<%s id="%s" class="%s">',
|
||||
esc_attr( $tag_name ),
|
||||
'post-' . get_the_ID(),
|
||||
implode( ' ', get_post_class( 'dynamic-content-template' ) ) // phpcs:ignore -- No escaping needed.
|
||||
);
|
||||
|
||||
if ( $use_theme_container ) {
|
||||
echo '<div class="inside-article">';
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'archive-navigation-template' === $this->type || 'post-navigation-template' === $this->type ) {
|
||||
$use_theme_pagination_container = get_post_meta( $post_id, '_generate_use_archive_navigation_container', true );
|
||||
|
||||
if ( $use_theme_pagination_container ) {
|
||||
echo '<div class="paging-navigation">';
|
||||
}
|
||||
}
|
||||
|
||||
echo GeneratePress_Elements_Helper::build_content( $post_id ); // phpcs:ignore -- No escaping needed.
|
||||
|
||||
if ( 'content-template' === $this->type ) {
|
||||
if ( $use_theme_container ) {
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '</' . esc_attr( $tag_name ) . '>';
|
||||
}
|
||||
|
||||
if ( 'archive-navigation-template' === $this->type || 'post-navigation-template' === $this->type ) {
|
||||
$use_theme_pagination_container = get_post_meta( $post_id, '_generate_use_archive_navigation_container', true );
|
||||
|
||||
if ( $use_theme_pagination_container ) {
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ class GeneratePress_Conditions {
|
||||
'general:author' => esc_attr__( 'Author Archives', 'gp-premium' ),
|
||||
'general:date' => esc_attr__( 'Date Archives', 'gp-premium' ),
|
||||
'general:search' => esc_attr__( 'Search Results', 'gp-premium' ),
|
||||
'general:no_results' => esc_attr__( 'No Search Results', 'gp-premium' ),
|
||||
'general:404' => esc_attr__( '404 Template', 'gp-premium' ),
|
||||
),
|
||||
),
|
||||
@ -188,6 +189,12 @@ class GeneratePress_Conditions {
|
||||
$location = 'general:date';
|
||||
} elseif ( is_search() ) {
|
||||
$location = 'general:search';
|
||||
|
||||
global $wp_query;
|
||||
|
||||
if ( 0 === $wp_query->found_posts ) {
|
||||
$location = 'general:no_results';
|
||||
}
|
||||
} elseif ( is_404() ) {
|
||||
$location = 'general:404';
|
||||
} elseif ( is_category() ) {
|
||||
|
@ -142,6 +142,351 @@ class GeneratePress_Elements_Helper {
|
||||
return '';
|
||||
}
|
||||
|
||||
$block_type = get_post_meta( $id, '_generate_block_type', true );
|
||||
|
||||
if ( 'site-footer' === $block_type ) {
|
||||
$block_element->post_content = str_replace( '{{current_year}}', date( 'Y' ), $block_element->post_content ); // phpcs:ignore -- Prefer date().
|
||||
}
|
||||
|
||||
return apply_filters( 'generate_do_block_element_content', do_blocks( $block_element->post_content ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get our Element type label.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @param string $type The type value.
|
||||
*/
|
||||
public static function get_element_type_label( $type ) {
|
||||
switch ( $type ) {
|
||||
case 'block':
|
||||
$label = __( 'Block', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'header':
|
||||
$label = __( 'Header', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'hook':
|
||||
$label = __( 'Hook', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'layout':
|
||||
$label = __( 'Layout', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'site-header':
|
||||
$label = __( 'Site Header', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'page-hero':
|
||||
$label = __( 'Page Hero', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'content-template':
|
||||
$label = __( 'Content Template', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'post-meta-template':
|
||||
$label = __( 'Post Meta Template', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'post-navigation-template':
|
||||
$label = __( 'Post Navigation', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'archive-navigation-template':
|
||||
$label = __( 'Archive Navigation', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'right-sidebar':
|
||||
$label = __( 'Right Sidebar', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'left-sidebar':
|
||||
$label = __( 'Left Sidebar', 'gp-premium' );
|
||||
break;
|
||||
|
||||
case 'site-footer':
|
||||
$label = __( 'Site Footer', 'gp-premium' );
|
||||
break;
|
||||
|
||||
default:
|
||||
$label = esc_html( str_replace( '-', ' ', ucfirst( $type ) ) );
|
||||
break;
|
||||
}
|
||||
|
||||
return $label;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for content template conditions.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @param int $post_id The post to check.
|
||||
*/
|
||||
public static function should_render_content_template( $post_id ) {
|
||||
$loop_item_display = get_post_meta( $post_id, '_generate_post_loop_item_display', true );
|
||||
$display = true;
|
||||
|
||||
if ( 'has-term' === $loop_item_display ) {
|
||||
$tax = get_post_meta( $post_id, '_generate_post_loop_item_display_tax', true );
|
||||
|
||||
if ( $tax ) {
|
||||
$term = get_post_meta( $post_id, '_generate_post_loop_item_display_term', true );
|
||||
|
||||
// Add support for multiple comma separated terms.
|
||||
if ( ! empty( $term ) ) {
|
||||
$term = str_replace( ' ', '', $term );
|
||||
$term = explode( ',', $term );
|
||||
}
|
||||
|
||||
if ( has_term( $term, $tax ) ) {
|
||||
$display = true;
|
||||
} else {
|
||||
$display = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'has-post-meta' === $loop_item_display ) {
|
||||
$post_meta_name = get_post_meta( $post_id, '_generate_post_loop_item_display_post_meta', true );
|
||||
|
||||
if ( $post_meta_name ) {
|
||||
$post_meta = get_post_meta( get_the_ID(), $post_meta_name, true );
|
||||
|
||||
if ( $post_meta ) {
|
||||
$display = true;
|
||||
} else {
|
||||
$display = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'is-first-post' === $loop_item_display ) {
|
||||
global $wp_query;
|
||||
|
||||
if ( 0 === $wp_query->current_post && ! is_paged() ) {
|
||||
$display = true;
|
||||
} else {
|
||||
$display = false;
|
||||
}
|
||||
}
|
||||
|
||||
return apply_filters( 'generate_should_render_content_template', $display, $post_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build our entire list of hooks to display.
|
||||
*
|
||||
* @since 1.7
|
||||
*
|
||||
* @return array Our list of hooks.
|
||||
*/
|
||||
public static function get_available_hooks() {
|
||||
$hooks = array(
|
||||
'scripts' => array(
|
||||
'group' => esc_attr__( 'Scripts/Styles', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'wp_head',
|
||||
'wp_body_open',
|
||||
'wp_footer',
|
||||
),
|
||||
),
|
||||
'header' => array(
|
||||
'group' => esc_attr__( 'Header', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_header',
|
||||
'generate_after_header',
|
||||
'generate_before_header_content',
|
||||
'generate_after_header_content',
|
||||
'generate_before_logo',
|
||||
'generate_after_logo',
|
||||
'generate_header',
|
||||
),
|
||||
),
|
||||
'navigation' => array(
|
||||
'group' => esc_attr__( 'Navigation', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_inside_navigation',
|
||||
'generate_after_primary_menu',
|
||||
'generate_inside_secondary_navigation',
|
||||
'generate_inside_mobile_menu',
|
||||
'generate_inside_mobile_menu_bar',
|
||||
'generate_inside_mobile_header',
|
||||
'generate_inside_slideout_navigation',
|
||||
'generate_after_slideout_navigation',
|
||||
),
|
||||
),
|
||||
'content' => array(
|
||||
'group' => esc_attr__( 'Content', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_inside_site_container',
|
||||
'generate_inside_container',
|
||||
'generate_before_main_content',
|
||||
'generate_after_main_content',
|
||||
'generate_before_content',
|
||||
'generate_after_content',
|
||||
'generate_after_entry_content',
|
||||
'generate_after_primary_content_area',
|
||||
'generate_before_entry_title',
|
||||
'generate_after_entry_title',
|
||||
'generate_after_entry_header',
|
||||
'generate_before_archive_title',
|
||||
'generate_after_archive_title',
|
||||
'generate_after_archive_description',
|
||||
),
|
||||
),
|
||||
'comments' => array(
|
||||
'group' => esc_attr__( 'Comments', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_comments_container',
|
||||
'generate_before_comments',
|
||||
'generate_inside_comments',
|
||||
'generate_below_comments_title',
|
||||
),
|
||||
),
|
||||
'sidebars' => array(
|
||||
'group' => esc_attr__( 'Sidebars', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_right_sidebar_content',
|
||||
'generate_after_right_sidebar_content',
|
||||
'generate_before_left_sidebar_content',
|
||||
'generate_after_left_sidebar_content',
|
||||
),
|
||||
),
|
||||
'footer' => array(
|
||||
'group' => esc_attr__( 'Footer', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_footer',
|
||||
'generate_after_footer',
|
||||
'generate_after_footer_widgets',
|
||||
'generate_before_footer_content',
|
||||
'generate_after_footer_content',
|
||||
'generate_footer',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if ( class_exists( 'WooCommerce' ) ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_mobile_cart_items';
|
||||
|
||||
$hooks['woocommerce-global'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Global', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_main_content',
|
||||
'woocommerce_after_main_content',
|
||||
'woocommerce_sidebar',
|
||||
'woocommerce_breadcrumb',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-shop'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Shop', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_archive_description',
|
||||
'woocommerce_before_shop_loop',
|
||||
'woocommerce_after_shop_loop',
|
||||
'woocommerce_before_shop_loop_item_title',
|
||||
'woocommerce_after_shop_loop_item_title',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-product'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Product', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_single_product',
|
||||
'woocommerce_before_single_product_summary',
|
||||
'woocommerce_after_single_product_summary',
|
||||
'woocommerce_single_product_summary',
|
||||
'woocommerce_share',
|
||||
'woocommerce_simple_add_to_cart',
|
||||
'woocommerce_before_add_to_cart_form',
|
||||
'woocommerce_after_add_to_cart_form',
|
||||
'woocommerce_before_add_to_cart_button',
|
||||
'woocommerce_after_add_to_cart_button',
|
||||
'woocommerce_before_add_to_cart_quantity',
|
||||
'woocommerce_after_add_to_cart_quantity',
|
||||
'woocommerce_product_meta_start',
|
||||
'woocommerce_product_meta_end',
|
||||
'woocommerce_after_single_product',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-cart'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Cart', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_calculate_totals',
|
||||
'woocommerce_after_calculate_totals',
|
||||
'woocommerce_before_cart',
|
||||
'woocommerce_after_cart_table',
|
||||
'woocommerce_before_cart_table',
|
||||
'woocommerce_before_cart_contents',
|
||||
'woocommerce_cart_contents',
|
||||
'woocommerce_after_cart_contents',
|
||||
'woocommerce_cart_coupon',
|
||||
'woocommerce_cart_actions',
|
||||
'woocommerce_before_cart_totals',
|
||||
'woocommerce_cart_totals_before_order_total',
|
||||
'woocommerce_cart_totals_after_order_total',
|
||||
'woocommerce_proceed_to_checkout',
|
||||
'woocommerce_after_cart_totals',
|
||||
'woocommerce_after_cart',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-checkout'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Checkout', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_checkout_form',
|
||||
'woocommerce_checkout_before_customer_details',
|
||||
'woocommerce_checkout_after_customer_details',
|
||||
'woocommerce_checkout_billing',
|
||||
'woocommerce_before_checkout_billing_form',
|
||||
'woocommerce_after_checkout_billing_form',
|
||||
'woocommerce_before_order_notes',
|
||||
'woocommerce_after_order_notes',
|
||||
'woocommerce_checkout_shipping',
|
||||
'woocommerce_checkout_before_order_review',
|
||||
'woocommerce_checkout_order_review',
|
||||
'woocommerce_review_order_before_cart_contents',
|
||||
'woocommerce_review_order_after_cart_contents',
|
||||
'woocommerce_review_order_before_order_total',
|
||||
'woocommerce_review_order_after_order_total',
|
||||
'woocommerce_review_order_before_payment',
|
||||
'woocommerce_review_order_before_submit',
|
||||
'woocommerce_review_order_after_submit',
|
||||
'woocommerce_review_order_after_payment',
|
||||
'woocommerce_checkout_after_order_review',
|
||||
'woocommerce_after_checkout_form',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-account'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Account', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_account_navigation',
|
||||
'woocommerce_account_navigation',
|
||||
'woocommerce_after_account_navigation',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_menu_bar_items';
|
||||
}
|
||||
|
||||
if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '>' ) ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_before_navigation';
|
||||
$hooks['navigation']['hooks'][] = 'generate_after_navigation';
|
||||
$hooks['navigation']['hooks'][] = 'generate_after_mobile_menu_button';
|
||||
$hooks['navigation']['hooks'][] = 'generate_inside_mobile_menu_control_wrapper';
|
||||
|
||||
$hooks['content']['hooks'][] = 'generate_after_loop';
|
||||
$hooks['content']['hooks'][] = 'generate_before_do_template_part';
|
||||
$hooks['content']['hooks'][] = 'generate_after_do_template_part';
|
||||
}
|
||||
|
||||
return apply_filters( 'generate_hooks_list', $hooks );
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,26 @@ class GeneratePress_Hero {
|
||||
|
||||
$display = apply_filters( 'generate_header_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id );
|
||||
|
||||
/**
|
||||
* Simplify filter name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
$display = apply_filters(
|
||||
'generate_element_display',
|
||||
$display,
|
||||
$post_id
|
||||
);
|
||||
|
||||
if ( $display ) {
|
||||
global $generate_elements;
|
||||
|
||||
$generate_elements[ $post_id ] = array(
|
||||
'is_block_element' => false,
|
||||
'type' => 'header',
|
||||
'id' => $post_id,
|
||||
);
|
||||
|
||||
$location = apply_filters( 'generate_page_hero_location', 'generate_after_header', $post_id );
|
||||
|
||||
add_action( $location, array( $this, 'build_hero' ), 9 );
|
||||
|
@ -163,7 +163,26 @@ class GeneratePress_Hook {
|
||||
|
||||
$display = apply_filters( 'generate_hook_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id );
|
||||
|
||||
/**
|
||||
* Simplify filter name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
$display = apply_filters(
|
||||
'generate_element_display',
|
||||
$display,
|
||||
$post_id
|
||||
);
|
||||
|
||||
if ( $display ) {
|
||||
global $generate_elements;
|
||||
|
||||
$generate_elements[ $post_id ] = array(
|
||||
'is_block_element' => false,
|
||||
'type' => 'hook',
|
||||
'id' => $post_id,
|
||||
);
|
||||
|
||||
if ( 'generate_header' === $this->hook && $this->disable_site_header ) {
|
||||
remove_action( 'generate_header', 'generate_construct_header' );
|
||||
}
|
||||
|
@ -232,7 +232,26 @@ class GeneratePress_Site_Layout {
|
||||
|
||||
$display = apply_filters( 'generate_layout_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id );
|
||||
|
||||
/**
|
||||
* Simplify filter name.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
$display = apply_filters(
|
||||
'generate_element_display',
|
||||
$display,
|
||||
$post_id
|
||||
);
|
||||
|
||||
if ( $display ) {
|
||||
global $generate_elements;
|
||||
|
||||
$generate_elements[ $post_id ] = array(
|
||||
'is_block_element' => false,
|
||||
'type' => 'layout',
|
||||
'id' => $post_id,
|
||||
);
|
||||
|
||||
add_action( 'wp', array( $this, 'after_setup' ), 100 );
|
||||
add_action( 'wp_enqueue_scripts', array( $this, 'build_css' ), 50 );
|
||||
|
||||
@ -285,6 +304,7 @@ class GeneratePress_Site_Layout {
|
||||
|
||||
if ( $this->disable_primary_navigation ) {
|
||||
add_filter( 'generate_navigation_location', '__return_false', 20 );
|
||||
add_filter( 'generate_disable_mobile_header_menu', '__return_true' );
|
||||
}
|
||||
|
||||
if ( $this->disable_secondary_navigation ) {
|
||||
|
@ -47,6 +47,7 @@ class GeneratePress_Elements_Metabox {
|
||||
add_action( 'save_post', array( $this, 'save' ) );
|
||||
add_action( 'wp_ajax_generate_elements_get_location_terms', array( $this, 'get_terms' ) );
|
||||
add_action( 'wp_ajax_generate_elements_get_location_posts', array( $this, 'get_posts' ) );
|
||||
add_action( 'wp_ajax_generate_elements_get_location_objects', array( $this, 'get_all_objects' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,6 +64,14 @@ class GeneratePress_Elements_Metabox {
|
||||
|
||||
if ( ! $element_type ) {
|
||||
$element_type = 'no-element-type';
|
||||
|
||||
if ( function_exists( 'get_current_screen' ) ) {
|
||||
$current_screen = get_current_screen();
|
||||
|
||||
if ( ! empty( $current_screen->is_block_editor ) ) {
|
||||
$element_type = 'block';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $element_type;
|
||||
@ -87,9 +96,21 @@ class GeneratePress_Elements_Metabox {
|
||||
$classes .= ' no-element-type';
|
||||
}
|
||||
|
||||
if ( 'header' === $element_type && get_post_meta( get_the_ID(), '_generate_element_content', true ) ) {
|
||||
$classes .= ' element-has-page-hero';
|
||||
}
|
||||
|
||||
$block_type = get_post_meta( get_the_ID(), '_generate_block_type', true );
|
||||
|
||||
if ( $block_type ) {
|
||||
if ( 'content-template' === $block_type && get_post_meta( get_the_ID(), '_generate_use_theme_post_container', true ) ) {
|
||||
$classes .= ' using-theme-post-container';
|
||||
}
|
||||
|
||||
if ( ( 'archive-navigation-template' === $block_type || 'post-navigation-template' === $block_type ) && get_post_meta( get_the_ID(), '_generate_use_archive_navigation_container', true ) ) {
|
||||
$classes .= ' using-theme-pagination-container';
|
||||
}
|
||||
|
||||
$classes .= ' ' . $block_type . '-block-type';
|
||||
}
|
||||
}
|
||||
@ -152,7 +173,12 @@ class GeneratePress_Elements_Metabox {
|
||||
wp_enqueue_media();
|
||||
wp_enqueue_script( 'wp-color-picker' );
|
||||
wp_enqueue_style( 'wp-color-picker' );
|
||||
wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '2.1.4', true );
|
||||
wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '3.0.0', true );
|
||||
|
||||
wp_add_inline_script(
|
||||
'wp-color-picker-alpha',
|
||||
'jQuery( function() { jQuery( ".color-picker" ).wpColorPicker(); } );'
|
||||
);
|
||||
|
||||
if ( function_exists( 'wp_add_inline_script' ) && function_exists( 'generate_get_default_color_palettes' ) ) {
|
||||
// Grab our palette array and turn it into JS.
|
||||
@ -167,31 +193,12 @@ class GeneratePress_Elements_Metabox {
|
||||
wp_enqueue_script( 'select2', GP_LIBRARY_DIRECTORY_URL . 'select2/select2.full.min.js', array( 'jquery', 'generate-elements-metabox' ), '4.0.13', true );
|
||||
|
||||
$css = '';
|
||||
$containerWidth = function_exists( 'generate_get_option' ) ? generate_get_option( 'container_width' ) : 1100;
|
||||
$rightSidebarWidth = apply_filters( 'generate_right_sidebar_width', '25' );
|
||||
$leftSidebarWidth = apply_filters( 'generate_left_sidebar_width', '25' );
|
||||
|
||||
$containerWidth = floatval( $containerWidth );
|
||||
$leftSidebarWidth = '0.' . $leftSidebarWidth;
|
||||
$rightSidebarWidth = '0.' . $rightSidebarWidth;
|
||||
|
||||
$leftSidebarWidth = $containerWidth - ( $containerWidth * $leftSidebarWidth );
|
||||
$rightSidebarWidth = $containerWidth - ( $containerWidth * $rightSidebarWidth );
|
||||
|
||||
$leftSidebarWidth = $containerWidth - $leftSidebarWidth;
|
||||
$rightSidebarWidth = $containerWidth - $rightSidebarWidth;
|
||||
|
||||
$css .= '.left-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout {max-width:' . $leftSidebarWidth . 'px;margin-left: auto;margin-right: auto;box-sizing: content-box;}';
|
||||
$css .= '.right-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout {max-width:' . $rightSidebarWidth . 'px;margin-left: auto;margin-right: auto;box-sizing: content-box;}';
|
||||
$css .= '.left-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout, .right-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout {padding: 10px;}';
|
||||
$css .= 'body.left-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout .block-editor-block-list__block, body.right-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout .block-editor-block-list__block {margin-top:0;margin-bottom:0;}';
|
||||
|
||||
if ( function_exists( 'generate_get_option' ) && 'separate-containers' === generate_get_option( 'content_layout_setting' ) ) {
|
||||
$css .= 'body.left-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout, body.right-sidebar-block-type div:not(.block-editor-inner-blocks) > .block-editor-block-list__layout {background: ' . generate_get_option( 'background_color' ) . ';}';
|
||||
$css .= 'body.left-sidebar-block-type .block-editor-block-list__layout.is-root-container, body.right-sidebar-block-type .block-editor-block-list__layout.is-root-container {background: ' . generate_get_option( 'background_color' ) . ';}';
|
||||
$css .= 'body.content-template-block-type:not(.using-theme-post-container) .block-editor-block-list__layout.is-root-container, body.archive-navigation-template-block-type:not(.using-theme-pagination-container) .block-editor-block-list__layout.is-root-container {background: ' . generate_get_option( 'background_color' ) . ';}';
|
||||
}
|
||||
|
||||
$css .= '.editor-styles-wrapper .wp-block:not(.editor-post-title__block), .site-header-block-type .editor-styles-wrapper .wp-block:not(.editor-post-title__block), .site-footer-block-type .editor-styles-wrapper .wp-block:not(.editor-post-title__block) {max-width: 100%;}';
|
||||
|
||||
wp_add_inline_style( 'generate-elements-metabox', $css );
|
||||
}
|
||||
}
|
||||
@ -204,7 +211,7 @@ class GeneratePress_Elements_Metabox {
|
||||
*/
|
||||
public function register_metabox() {
|
||||
// Title not translated on purpose.
|
||||
add_meta_box( 'generate_premium_elements', 'Element', array( $this, 'element_fields' ), 'gp_elements', 'normal' );
|
||||
add_meta_box( 'generate_premium_elements', 'Element', array( $this, 'element_fields' ), 'gp_elements', 'normal', 'high' );
|
||||
add_meta_box( 'generate_page_hero_template_tags', __( 'Template Tags', 'gp-premium' ), array( $this, 'template_tags' ), 'gp_elements', 'side', 'low' );
|
||||
remove_meta_box( 'slugdiv', 'gp_elements', 'normal' );
|
||||
}
|
||||
@ -220,9 +227,14 @@ class GeneratePress_Elements_Metabox {
|
||||
wp_nonce_field( basename( __FILE__ ), 'generate_elements_nonce' );
|
||||
|
||||
$type = self::get_element_type();
|
||||
$page_hero_class = '';
|
||||
$merge = get_post_meta( get_the_ID(), '_generate_site_header_merge', true );
|
||||
$conditions_set = get_post_meta( get_the_ID(), '_generate_element_display_conditions', true );
|
||||
$post_status = get_post_status( get_the_ID() );
|
||||
|
||||
if ( 'header' === $type && get_post_meta( get_the_ID(), '_generate_element_content', true ) ) {
|
||||
$page_hero_class = ' has-page-hero';
|
||||
}
|
||||
?>
|
||||
<div class="gp-element-type" style="display: none;">
|
||||
<select class="select-type" name="_generate_element_type">
|
||||
@ -240,29 +252,29 @@ class GeneratePress_Elements_Metabox {
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="element-settings <?php echo esc_html( $type ); ?>">
|
||||
<div class="element-settings <?php echo esc_html( $type . $page_hero_class ); ?>">
|
||||
<?php if ( 'hook' === $type || 'header' === $type ) : ?>
|
||||
<textarea id="generate-element-content" name="_generate_element_content"><?php echo esc_textarea( get_post_meta( get_the_ID(), '_generate_element_content', true ) ); ?></textarea>
|
||||
<?php endif; ?>
|
||||
|
||||
<ul class="element-metabox-tabs">
|
||||
<?php if ( 'header' === $type ) : ?>
|
||||
<li data-type="header" <?php echo 'header' === $type ? 'class="is-selected" ' : ''; ?>data-tab="hero">
|
||||
<li data-type="header" <?php echo 'header' === $type && '' === $page_hero_class ? 'class="is-selected" ' : ''; ?>data-tab="site-header">
|
||||
<a href="#">
|
||||
<?php _e( 'Page Hero', 'gp-premium' ); ?>
|
||||
<?php _e( 'Site Header', 'gp-premium' ); ?>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li data-type="header" data-tab="site-header">
|
||||
<li data-type="header" <?php echo 'header' === $type && '' !== $page_hero_class ? 'class="is-selected" ' : ''; ?>data-tab="hero">
|
||||
<a href="#">
|
||||
<?php _e( 'Site Header', 'gp-premium' ); ?>
|
||||
<?php _e( 'Page Hero', 'gp-premium' ); ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<li data-type="hook" <?php echo ( 'hook' === $type || 'block' === $type ) ? 'class="is-selected" ' : ''; ?>data-tab="hook-settings">
|
||||
<a href="#">
|
||||
<?php _e( 'Settings', 'gp-premium' ); ?>
|
||||
<?php echo 'block' === $type ? esc_attr__( 'Display Rules', 'gp-premium' ) : esc_attr__( 'Settings', 'gp-premium' ); ?>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -312,30 +324,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<table class="generate-elements-settings" data-type="hook" data-tab="hook-settings">
|
||||
<tbody>
|
||||
<?php
|
||||
if ( 'block' === $type ) :
|
||||
?>
|
||||
<tr id="block-row" class="generate-element-row">
|
||||
<td class="generate-element-row-heading">
|
||||
<label for="_generate_block_type"><?php _e( 'Block Type', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<select id="_generate_block_type" name="_generate_block_type">
|
||||
<option <?php selected( get_post_meta( get_the_ID(), '_generate_block_type', true ), 'hook' ); ?> value="hook"><?php esc_attr_e( 'Hook', 'gp-premium' ); ?></option>
|
||||
<option <?php selected( get_post_meta( get_the_ID(), '_generate_block_type', true ), 'site-header' ); ?> value="site-header"><?php esc_attr_e( 'Site Header', 'gp-premium' ); ?></option>
|
||||
<option <?php selected( get_post_meta( get_the_ID(), '_generate_block_type', true ), 'site-footer' ); ?> value="site-footer"><?php esc_attr_e( 'Site Footer', 'gp-premium' ); ?></option>
|
||||
<option <?php selected( get_post_meta( get_the_ID(), '_generate_block_type', true ), 'right-sidebar' ); ?> value="right-sidebar"><?php esc_attr_e( 'Right Sidebar', 'gp-premium' ); ?></option>
|
||||
<option <?php selected( get_post_meta( get_the_ID(), '_generate_block_type', true ), 'left-sidebar' ); ?> value="left-sidebar"><?php esc_attr_e( 'Left Sidebar', 'gp-premium' ); ?></option>
|
||||
</select>
|
||||
|
||||
<div class="sidebar-notice" <?php echo 'left-sidebar' === get_post_meta( get_the_ID(), '_generate_block_type', true ) || 'right-sidebar' === get_post_meta( get_the_ID(), '_generate_block_type', true ) ? 'style="display: block;"' : ''; ?>>
|
||||
<?php _e( 'This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.', 'gp-premium' ); ?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
endif;
|
||||
|
||||
if ( 'hook' === $type || 'block' === $type ) :
|
||||
if ( 'hook' === $type ) :
|
||||
?>
|
||||
<tr id="hook-row" class="generate-element-row hook-row <?php echo '' !== get_post_meta( get_the_ID(), '_generate_block_type', true ) && 'hook' !== get_post_meta( get_the_ID(), '_generate_block_type', true ) ? 'hide-hook-row' : ''; ?>">
|
||||
<td class="generate-element-row-heading">
|
||||
@ -430,7 +419,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<?php
|
||||
endif;
|
||||
|
||||
if ( 'hook' === $type || 'block' === $type ) :
|
||||
if ( 'hook' === $type ) :
|
||||
?>
|
||||
<tr class="generate-element-row hook-row <?php echo '' !== get_post_meta( get_the_ID(), '_generate_block_type', true ) && 'hook' !== get_post_meta( get_the_ID(), '_generate_block_type', true ) ? 'hide-hook-row' : ''; ?>">
|
||||
<td class="generate-element-row-heading">
|
||||
@ -753,7 +742,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<label for="_generate_hero_background_color"><?php _e( 'Background Color', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<input class="color-picker" data-alpha="true" type="text" name="_generate_hero_background_color" id="_generate_hero_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_hero_background_color', true ) ); ?>" />
|
||||
<input class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" type="text" name="_generate_hero_background_color" id="_generate_hero_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_hero_background_color', true ) ); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -836,7 +825,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<label for="_generate_site_header_background_color"><?php _e( 'Header Background', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<input class="color-picker" data-alpha="true" type="text" name="_generate_site_header_background_color" id="_generate_site_header_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_site_header_background_color', true ) ); ?>" />
|
||||
<input class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" type="text" name="_generate_site_header_background_color" id="_generate_site_header_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_site_header_background_color', true ) ); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -998,7 +987,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<label for="_generate_navigation_background_color"><?php _e( 'Navigation Background', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<input class="color-picker" data-alpha="true" type="text" name="_generate_navigation_background_color" id="_generate_navigation_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color', true ) ); ?>" />
|
||||
<input class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" type="text" name="_generate_navigation_background_color" id="_generate_navigation_background_color" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color', true ) ); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -1016,7 +1005,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<label for="_generate_navigation_background_color_hover"><?php _e( 'Navigation Background Hover', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<input class="color-picker" data-alpha="true" type="text" name="_generate_navigation_background_color_hover" id="_generate_navigation_background_color_hover" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color_hover', true ) ); ?>" />
|
||||
<input class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" type="text" name="_generate_navigation_background_color_hover" id="_generate_navigation_background_color_hover" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color_hover', true ) ); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -1034,7 +1023,7 @@ class GeneratePress_Elements_Metabox {
|
||||
<label for="_generate_navigation_background_color_current"><?php _e( 'Navigation Background Current', 'gp-premium' ); ?></label>
|
||||
</td>
|
||||
<td class="generate-element-row-content">
|
||||
<input class="color-picker" data-alpha="true" type="text" name="_generate_navigation_background_color_current" id="_generate_navigation_background_color_current" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color_current', true ) ); ?>" />
|
||||
<input class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" type="text" name="_generate_navigation_background_color_current" id="_generate_navigation_background_color_current" value="<?php echo esc_attr( get_post_meta( get_the_ID(), '_generate_navigation_background_color_current', true ) ); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -1659,17 +1648,6 @@ class GeneratePress_Elements_Metabox {
|
||||
delete_post_meta( $post_id, $type_key );
|
||||
}
|
||||
|
||||
// Save the block type.
|
||||
if ( 'block' === $type_value && isset( $_POST['_generate_block_type'] ) ) {
|
||||
$block_type_value = sanitize_key( $_POST['_generate_block_type'] );
|
||||
|
||||
if ( $block_type_value ) {
|
||||
update_post_meta( $post_id, '_generate_block_type', $block_type_value );
|
||||
} else {
|
||||
delete_post_meta( $post_id, '_generate_block_type' );
|
||||
}
|
||||
}
|
||||
|
||||
// Content.
|
||||
if ( isset( $_POST['_generate_element_content'] ) ) {
|
||||
$key = '_generate_element_content';
|
||||
@ -1688,7 +1666,7 @@ class GeneratePress_Elements_Metabox {
|
||||
}
|
||||
|
||||
// Save Hooks type.
|
||||
if ( 'hook' === $type_value || 'block' === $type_value ) {
|
||||
if ( 'hook' === $type_value ) {
|
||||
$hook_values = array(
|
||||
'_generate_hook' => 'text',
|
||||
'_generate_custom_hook' => 'text',
|
||||
@ -2078,45 +2056,93 @@ class GeneratePress_Elements_Metabox {
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all of our posts and terms in one go on load.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public function get_all_objects() {
|
||||
check_ajax_referer( 'generate-elements-location', 'nonce' );
|
||||
|
||||
$current_user_can = 'manage_options';
|
||||
|
||||
if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) {
|
||||
$current_user_can = 'edit_posts';
|
||||
}
|
||||
|
||||
if ( ! current_user_can( $current_user_can ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $_POST['posts'] ) && ! isset( $_POST['terms'] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$posts = array();
|
||||
$terms = array();
|
||||
|
||||
if ( ! empty( $_POST['posts'] ) ) {
|
||||
$posts = array_map( 'sanitize_text_field', $_POST['posts'] );
|
||||
}
|
||||
|
||||
if ( ! empty( $_POST['terms'] ) ) {
|
||||
$terms = array_map( 'sanitize_text_field', $_POST['terms'] );
|
||||
}
|
||||
|
||||
$all_posts = self::get_post_type_posts( $posts );
|
||||
$all_terms = self::get_taxonomy_terms( $terms );
|
||||
|
||||
echo wp_json_encode( array_merge( $all_posts, $all_terms ) );
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up posts inside a post type.
|
||||
*
|
||||
* @since 1.7
|
||||
*
|
||||
* @param string $post_type The post type to look up.
|
||||
* @param string|array $post_type The post type to look up.
|
||||
* @return array
|
||||
*/
|
||||
public static function get_post_type_posts( $post_type ) {
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$post_status = array( 'publish', 'future', 'draft', 'pending', 'private' );
|
||||
|
||||
$object = get_post_type_object( $post_type );
|
||||
|
||||
$data = array(
|
||||
'type' => 'posts',
|
||||
'postType' => $post_type,
|
||||
'label' => $object->label,
|
||||
'objects' => array(),
|
||||
);
|
||||
|
||||
if ( 'attachment' === $post_type ) {
|
||||
$posts = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title from $wpdb->posts where post_type = %s ORDER BY post_title", $post_type ) );
|
||||
|
||||
} else {
|
||||
$format = implode( ', ', array_fill( 0, count( $post_status ), '%s' ) );
|
||||
$query = sprintf( "SELECT ID, post_title from $wpdb->posts where post_type = '%s' AND post_status IN(%s) ORDER BY post_title", $post_type, $format );
|
||||
// @codingStandardsIgnoreLine
|
||||
$posts = $wpdb->get_results( $wpdb->prepare( $query, $post_status ) );
|
||||
if ( ! is_array( $post_type ) ) {
|
||||
$post_type = array( $post_type );
|
||||
}
|
||||
|
||||
foreach ( $posts as $post ) {
|
||||
$title = ( '' !== $post->post_title ) ? esc_attr( $post->post_title ) : $post_type . '-' . $post->ID;
|
||||
$data['objects'][] = array(
|
||||
'id' => $post->ID,
|
||||
'name' => $title,
|
||||
$data = array();
|
||||
|
||||
foreach ( $post_type as $type ) {
|
||||
global $wpdb;
|
||||
|
||||
$post_status = array( 'publish', 'future', 'draft', 'pending', 'private' );
|
||||
|
||||
$object = get_post_type_object( $type );
|
||||
|
||||
$data[ $type ] = array(
|
||||
'type' => 'posts',
|
||||
'postType' => $type,
|
||||
'label' => $object->label,
|
||||
'objects' => array(),
|
||||
);
|
||||
|
||||
if ( 'attachment' === $type ) {
|
||||
$posts = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title from $wpdb->posts where post_type = %s ORDER BY post_title", $type ) );
|
||||
|
||||
} else {
|
||||
$format = implode( ', ', array_fill( 0, count( $post_status ), '%s' ) );
|
||||
$query = sprintf( "SELECT ID, post_title from $wpdb->posts where post_type = '%s' AND post_status IN(%s) ORDER BY post_title", $type, $format );
|
||||
// @codingStandardsIgnoreLine
|
||||
$posts = $wpdb->get_results( $wpdb->prepare( $query, $post_status ) );
|
||||
}
|
||||
|
||||
foreach ( $posts as $post ) {
|
||||
$title = ( '' !== $post->post_title ) ? esc_attr( $post->post_title ) : $type . '-' . $post->ID;
|
||||
$data[ $type ]['objects'][] = array(
|
||||
'id' => $post->ID,
|
||||
'name' => $title,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
@ -2127,31 +2153,39 @@ class GeneratePress_Elements_Metabox {
|
||||
*
|
||||
* @since 1.7
|
||||
*
|
||||
* @param int $tax_id The taxonomy ID.
|
||||
* @param int|array $tax_id The taxonomy ID.
|
||||
* @return array
|
||||
*/
|
||||
public static function get_taxonomy_terms( $tax_id ) {
|
||||
$tax = get_taxonomy( $tax_id );
|
||||
if ( ! is_array( $tax_id ) ) {
|
||||
$tax_id = array( $tax_id );
|
||||
}
|
||||
|
||||
$terms = get_terms(
|
||||
array(
|
||||
'taxonomy' => $tax_id,
|
||||
'hide_empty' => false,
|
||||
)
|
||||
);
|
||||
$data = array();
|
||||
|
||||
$data = array(
|
||||
'type' => 'terms',
|
||||
'taxonomy' => $tax_id,
|
||||
'label' => $tax->label,
|
||||
'objects' => array(),
|
||||
);
|
||||
foreach ( $tax_id as $id ) {
|
||||
$tax = get_taxonomy( $id );
|
||||
|
||||
foreach ( $terms as $term ) {
|
||||
$data['objects'][] = array(
|
||||
'id' => $term->term_id,
|
||||
'name' => esc_attr( $term->name ),
|
||||
$terms = get_terms(
|
||||
array(
|
||||
'taxonomy' => $id,
|
||||
'hide_empty' => false,
|
||||
)
|
||||
);
|
||||
|
||||
$data[ $id ] = array(
|
||||
'type' => 'terms',
|
||||
'taxonomy' => $id,
|
||||
'label' => $tax->label,
|
||||
'objects' => array(),
|
||||
);
|
||||
|
||||
foreach ( $terms as $term ) {
|
||||
$data[ $id ]['objects'][] = array(
|
||||
'id' => $term->term_id,
|
||||
'name' => esc_attr( $term->name ),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
@ -2165,209 +2199,7 @@ class GeneratePress_Elements_Metabox {
|
||||
* @return array Our list of hooks.
|
||||
*/
|
||||
public static function get_available_hooks() {
|
||||
$hooks = array(
|
||||
'scripts' => array(
|
||||
'group' => esc_attr__( 'Scripts & Styles', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'wp_head',
|
||||
'wp_body_open',
|
||||
'wp_footer',
|
||||
),
|
||||
),
|
||||
'header' => array(
|
||||
'group' => esc_attr__( 'Header', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_header',
|
||||
'generate_after_header',
|
||||
'generate_before_header_content',
|
||||
'generate_after_header_content',
|
||||
'generate_before_logo',
|
||||
'generate_after_logo',
|
||||
'generate_header',
|
||||
),
|
||||
),
|
||||
'navigation' => array(
|
||||
'group' => esc_attr__( 'Navigation', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_inside_navigation',
|
||||
'generate_inside_secondary_navigation',
|
||||
'generate_inside_mobile_menu',
|
||||
'generate_inside_mobile_menu_bar',
|
||||
'generate_inside_mobile_header',
|
||||
'generate_inside_slideout_navigation',
|
||||
'generate_after_slideout_navigation',
|
||||
),
|
||||
),
|
||||
'content' => array(
|
||||
'group' => esc_attr__( 'Content', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_inside_site_container',
|
||||
'generate_inside_container',
|
||||
'generate_before_main_content',
|
||||
'generate_after_main_content',
|
||||
'generate_before_content',
|
||||
'generate_after_content',
|
||||
'generate_after_entry_content',
|
||||
'generate_after_primary_content_area',
|
||||
'generate_before_entry_title',
|
||||
'generate_after_entry_title',
|
||||
'generate_after_entry_header',
|
||||
'generate_before_archive_title',
|
||||
'generate_after_archive_title',
|
||||
'generate_after_archive_description',
|
||||
),
|
||||
),
|
||||
'comments' => array(
|
||||
'group' => esc_attr__( 'Comments', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_comments_container',
|
||||
'generate_before_comments',
|
||||
'generate_inside_comments',
|
||||
'generate_below_comments_title',
|
||||
),
|
||||
),
|
||||
'sidebars' => array(
|
||||
'group' => esc_attr__( 'Sidebars', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_right_sidebar_content',
|
||||
'generate_after_right_sidebar_content',
|
||||
'generate_before_left_sidebar_content',
|
||||
'generate_after_left_sidebar_content',
|
||||
),
|
||||
),
|
||||
'footer' => array(
|
||||
'group' => esc_attr__( 'Footer', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'generate_before_footer',
|
||||
'generate_after_footer',
|
||||
'generate_after_footer_widgets',
|
||||
'generate_before_footer_content',
|
||||
'generate_after_footer_content',
|
||||
'generate_footer',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if ( class_exists( 'WooCommerce' ) ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_mobile_cart_items';
|
||||
|
||||
$hooks['woocommerce-global'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Global', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_main_content',
|
||||
'woocommerce_after_main_content',
|
||||
'woocommerce_sidebar',
|
||||
'woocommerce_breadcrumb',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-shop'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Shop', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_archive_description',
|
||||
'woocommerce_before_shop_loop',
|
||||
'woocommerce_after_shop_loop',
|
||||
'woocommerce_before_shop_loop_item_title',
|
||||
'woocommerce_after_shop_loop_item_title',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-product'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Product', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_single_product',
|
||||
'woocommerce_before_single_product_summary',
|
||||
'woocommerce_after_single_product_summary',
|
||||
'woocommerce_single_product_summary',
|
||||
'woocommerce_share',
|
||||
'woocommerce_simple_add_to_cart',
|
||||
'woocommerce_before_add_to_cart_form',
|
||||
'woocommerce_after_add_to_cart_form',
|
||||
'woocommerce_before_add_to_cart_button',
|
||||
'woocommerce_after_add_to_cart_button',
|
||||
'woocommerce_before_add_to_cart_quantity',
|
||||
'woocommerce_after_add_to_cart_quantity',
|
||||
'woocommerce_product_meta_start',
|
||||
'woocommerce_product_meta_end',
|
||||
'woocommerce_after_single_product',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-cart'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Cart', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_calculate_totals',
|
||||
'woocommerce_after_calculate_totals',
|
||||
'woocommerce_before_cart',
|
||||
'woocommerce_after_cart_table',
|
||||
'woocommerce_before_cart_table',
|
||||
'woocommerce_before_cart_contents',
|
||||
'woocommerce_cart_contents',
|
||||
'woocommerce_after_cart_contents',
|
||||
'woocommerce_cart_coupon',
|
||||
'woocommerce_cart_actions',
|
||||
'woocommerce_before_cart_totals',
|
||||
'woocommerce_cart_totals_before_order_total',
|
||||
'woocommerce_cart_totals_after_order_total',
|
||||
'woocommerce_proceed_to_checkout',
|
||||
'woocommerce_after_cart_totals',
|
||||
'woocommerce_after_cart',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-checkout'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Checkout', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_checkout_form',
|
||||
'woocommerce_checkout_before_customer_details',
|
||||
'woocommerce_checkout_after_customer_details',
|
||||
'woocommerce_checkout_billing',
|
||||
'woocommerce_before_checkout_billing_form',
|
||||
'woocommerce_after_checkout_billing_form',
|
||||
'woocommerce_before_order_notes',
|
||||
'woocommerce_after_order_notes',
|
||||
'woocommerce_checkout_shipping',
|
||||
'woocommerce_checkout_before_order_review',
|
||||
'woocommerce_checkout_order_review',
|
||||
'woocommerce_review_order_before_cart_contents',
|
||||
'woocommerce_review_order_after_cart_contents',
|
||||
'woocommerce_review_order_before_order_total',
|
||||
'woocommerce_review_order_after_order_total',
|
||||
'woocommerce_review_order_before_payment',
|
||||
'woocommerce_review_order_before_submit',
|
||||
'woocommerce_review_order_after_submit',
|
||||
'woocommerce_review_order_after_payment',
|
||||
'woocommerce_checkout_after_order_review',
|
||||
'woocommerce_after_checkout_form',
|
||||
),
|
||||
);
|
||||
|
||||
$hooks['woocommerce-account'] = array(
|
||||
'group' => esc_attr__( 'WooCommerce - Account', 'gp-premium' ),
|
||||
'hooks' => array(
|
||||
'woocommerce_before_account_navigation',
|
||||
'woocommerce_account_navigation',
|
||||
'woocommerce_after_account_navigation',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_menu_bar_items';
|
||||
}
|
||||
|
||||
if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '>' ) ) {
|
||||
$hooks['navigation']['hooks'][] = 'generate_before_navigation';
|
||||
$hooks['navigation']['hooks'][] = 'generate_after_navigation';
|
||||
$hooks['navigation']['hooks'][] = 'generate_after_mobile_menu_button';
|
||||
$hooks['navigation']['hooks'][] = 'generate_inside_mobile_menu_control_wrapper';
|
||||
|
||||
$hooks['content']['hooks'][] = 'generate_after_loop';
|
||||
$hooks['content']['hooks'][] = 'generate_before_do_template_part';
|
||||
$hooks['content']['hooks'][] = 'generate_after_do_template_part';
|
||||
}
|
||||
|
||||
return apply_filters( 'generate_hooks_list', $hooks );
|
||||
return GeneratePress_Elements_Helper::get_available_hooks();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,25 +74,29 @@ class GeneratePress_Elements_Post_Type {
|
||||
*/
|
||||
public function post_type() {
|
||||
$labels = array(
|
||||
'name' => _x( 'Elements', 'Post Type General Name', 'gp-premium' ),
|
||||
'singular_name' => _x( 'Element', 'Post Type Singular Name', 'gp-premium' ),
|
||||
'menu_name' => __( 'Elements', 'gp-premium' ),
|
||||
'all_items' => __( 'All Elements', 'gp-premium' ),
|
||||
'add_new' => __( 'Add New Element', 'gp-premium' ),
|
||||
'add_new_item' => __( 'Add New Element', 'gp-premium' ),
|
||||
'new_item' => __( 'New Element', 'gp-premium' ),
|
||||
'edit_item' => __( 'Edit Element', 'gp-premium' ),
|
||||
'update_item' => __( 'Update Element', 'gp-premium' ),
|
||||
'search_items' => __( 'Search Element', 'gp-premium' ),
|
||||
'featured_image' => __( 'Background Image', 'gp-premium' ),
|
||||
'set_featured_image' => __( 'Set background image', 'gp-premium' ),
|
||||
'remove_featured_image' => __( 'Remove background image', 'gp-premium' ),
|
||||
'name' => _x( 'Elements', 'Post Type General Name', 'gp-premium' ),
|
||||
'singular_name' => _x( 'Element', 'Post Type Singular Name', 'gp-premium' ),
|
||||
'menu_name' => __( 'Elements', 'gp-premium' ),
|
||||
'all_items' => __( 'All Elements', 'gp-premium' ),
|
||||
'add_new' => __( 'Add New Element', 'gp-premium' ),
|
||||
'add_new_item' => __( 'Add New Element', 'gp-premium' ),
|
||||
'new_item' => __( 'New Element', 'gp-premium' ),
|
||||
'edit_item' => __( 'Edit Element', 'gp-premium' ),
|
||||
'update_item' => __( 'Update Element', 'gp-premium' ),
|
||||
'search_items' => __( 'Search Element', 'gp-premium' ),
|
||||
'featured_image' => __( 'Background Image', 'gp-premium' ),
|
||||
'set_featured_image' => __( 'Set background image', 'gp-premium' ),
|
||||
'remove_featured_image' => __( 'Remove background image', 'gp-premium' ),
|
||||
'item_published' => __( 'Element published.', 'gp-premium' ),
|
||||
'item_updated' => __( 'Element updated.', 'gp-premium' ),
|
||||
'item_scheduled' => __( 'Element scheduled.', 'gp-premium' ),
|
||||
'item_reverted_to_draft' => __( 'Element reverted to draft.', 'gp-premium' ),
|
||||
);
|
||||
|
||||
$args = array(
|
||||
'labels' => $labels,
|
||||
'supports' => array( 'title', 'editor', 'thumbnail' ),
|
||||
'hierarchical' => false,
|
||||
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes' ),
|
||||
'hierarchical' => true,
|
||||
'public' => false,
|
||||
'show_ui' => true,
|
||||
'show_in_menu' => false,
|
||||
@ -134,10 +138,11 @@ class GeneratePress_Elements_Post_Type {
|
||||
if ( 'block' !== $type ) {
|
||||
$args['supports'] = array( 'title', 'thumbnail' );
|
||||
$args['show_in_rest'] = false;
|
||||
$args['hierarchical'] = false;
|
||||
}
|
||||
|
||||
if ( 'block' === $type ) {
|
||||
$args['supports'] = array( 'title', 'editor' );
|
||||
$args['supports'] = array( 'title', 'editor', 'custom-fields', 'page-attributes' );
|
||||
}
|
||||
|
||||
if ( 'layout' === $type ) {
|
||||
@ -196,7 +201,13 @@ class GeneratePress_Elements_Post_Type {
|
||||
* @since 1.7
|
||||
*/
|
||||
public function build_element_type_filter() {
|
||||
if ( 'gp_elements' !== get_post_type() ) {
|
||||
$screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false;
|
||||
|
||||
if ( ! $screen ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! isset( $screen->post_type ) || 'gp_elements' !== $screen->post_type ) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -207,23 +218,52 @@ class GeneratePress_Elements_Post_Type {
|
||||
'layout' => esc_html__( 'Layouts', 'gp-premium' ),
|
||||
);
|
||||
|
||||
$current_element_type = isset( $_GET['gp_element_type_filter'] ) ? esc_html( $_GET['gp_element_type_filter'] ) : ''; // phpcs:ignore -- No processing happening.
|
||||
$current_block_type = isset( $_GET['gp_elements_block_type_filter'] ) ? esc_html( $_GET['gp_elements_block_type_filter'] ) : ''; // phpcs:ignore -- No processing happening.
|
||||
?>
|
||||
<select name="gp_element_type_filter">
|
||||
<option value=""><?php esc_html_e( 'All types', 'gp-premium' ); ?></option>
|
||||
<?php
|
||||
$current = isset( $_GET['gp_element_type_filter'] )? esc_html( $_GET['gp_element_type_filter'] ) : ''; // phpcs:ignore -- No processing happening.
|
||||
|
||||
foreach ( $values as $value => $label ) {
|
||||
printf(
|
||||
'<option value="%1$s" %2$s>%3$s</option>',
|
||||
esc_html( $value ),
|
||||
$value === $current ? 'selected="selected"' : '',
|
||||
$value === $current_element_type ? 'selected="selected"' : '',
|
||||
esc_html( $label )
|
||||
);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<?php
|
||||
if ( 'block' === $current_element_type ) {
|
||||
$block_types = array(
|
||||
'hook',
|
||||
'site-header',
|
||||
'page-hero',
|
||||
'content-template',
|
||||
'post-meta-template',
|
||||
'post-navigation-template',
|
||||
'archive-navigation-template',
|
||||
'right-sidebar',
|
||||
'left-sidebar',
|
||||
'site-footer',
|
||||
);
|
||||
?>
|
||||
<select name="gp_elements_block_type_filter">
|
||||
<option value=""><?php esc_html_e( 'All block types', 'gp-premium' ); ?></option>
|
||||
<?php
|
||||
foreach ( $block_types as $value ) {
|
||||
printf(
|
||||
'<option value="%1$s" %2$s>%3$s</option>',
|
||||
esc_html( $value ),
|
||||
$value === $current_block_type ? 'selected="selected"' : '',
|
||||
esc_html( GeneratePress_Elements_Helper::get_element_type_label( $value ) )
|
||||
);
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -242,10 +282,28 @@ class GeneratePress_Elements_Post_Type {
|
||||
global $pagenow;
|
||||
|
||||
$type = isset( $_GET['gp_element_type_filter'] ) ? $_GET['gp_element_type_filter'] : ''; // phpcs:ignore -- No processing happening.
|
||||
$meta_query = array();
|
||||
|
||||
if ( 'edit.php' === $pagenow && $query->is_main_query() && '' !== $type ) {
|
||||
$query->set( 'meta_key', '_generate_element_type' );
|
||||
$query->set( 'meta_value', esc_attr( $type ) );
|
||||
$meta_query[] = array(
|
||||
'key' => '_generate_element_type',
|
||||
'value' => esc_attr( $type ),
|
||||
'compare' => '=',
|
||||
);
|
||||
|
||||
$block_type = isset( $_GET['gp_elements_block_type_filter'] ) ? $_GET['gp_elements_block_type_filter'] : ''; // phpcs:ignore -- No processing happening.
|
||||
|
||||
if ( 'block' === $type && '' !== $block_type ) {
|
||||
$meta_query['relation'] = 'AND';
|
||||
|
||||
$meta_query[] = array(
|
||||
'key' => '_generate_block_type',
|
||||
'value' => esc_attr( $block_type ),
|
||||
'compare' => '=',
|
||||
);
|
||||
}
|
||||
|
||||
$query->set( 'meta_query', $meta_query );
|
||||
}
|
||||
}
|
||||
|
||||
@ -269,7 +327,7 @@ class GeneratePress_Elements_Post_Type {
|
||||
$block_type = get_post_meta( $post_id, '_generate_block_type', true );
|
||||
|
||||
if ( $block_type ) {
|
||||
echo ' - ' . esc_html( str_replace( '-', ' ', ucfirst( $block_type ) ) );
|
||||
echo ' - ' . esc_html( GeneratePress_Elements_Helper::get_element_type_label( $block_type ) );
|
||||
|
||||
if ( 'hook' === $block_type && $hook_location ) {
|
||||
echo '<br />';
|
||||
@ -310,12 +368,15 @@ class GeneratePress_Elements_Post_Type {
|
||||
|
||||
case 'location':
|
||||
$location = get_post_meta( $post_id, '_generate_element_display_conditions', true );
|
||||
$parent_block = wp_get_post_parent_id( $post_id );
|
||||
|
||||
if ( $location ) {
|
||||
foreach ( (array) $location as $data ) {
|
||||
echo esc_html( GeneratePress_Conditions::get_saved_label( $data ) );
|
||||
echo '<br />';
|
||||
}
|
||||
} elseif ( ! empty( $parent_block ) ) {
|
||||
echo esc_html__( 'Inherit from parent', 'gp-premium' );
|
||||
} else {
|
||||
echo esc_html__( 'Not set', 'gp-premium' );
|
||||
}
|
||||
@ -423,9 +484,9 @@ class GeneratePress_Elements_Post_Type {
|
||||
<select class="select-type" name="element_type">
|
||||
<option value=""><?php esc_attr_e( 'Choose...', 'gp-premium' ); ?></option>
|
||||
<option value="block"><?php esc_attr_e( 'Block', 'gp-premium' ); ?></option>
|
||||
<option value="header"><?php esc_attr_e( 'Header', 'gp-premium' ); ?></option>
|
||||
<option value="hook"><?php esc_attr_e( 'Hook', 'gp-premium' ); ?></option>
|
||||
<option value="layout"><?php esc_attr_e( 'Layout', 'gp-premium' ); ?></option>
|
||||
<option value="header"><?php esc_attr_e( 'Header', 'gp-premium' ); ?></option>
|
||||
</select>
|
||||
|
||||
<button class="button button-primary"><?php _e( 'Create', 'gp-premium' ); ?></button>
|
||||
|
@ -19,6 +19,7 @@ require $elements_dir . 'class-hooks.php';
|
||||
require $elements_dir . 'class-hero.php';
|
||||
require $elements_dir . 'class-layout.php';
|
||||
require $elements_dir . 'class-block.php';
|
||||
require $elements_dir . 'class-block-elements.php';
|
||||
require $elements_dir . 'class-post-type.php';
|
||||
|
||||
add_action( 'wp', 'generate_premium_do_elements' );
|
||||
@ -188,3 +189,84 @@ function generate_add_block_element_content_filters( $content ) {
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
add_action( 'admin_bar_menu', 'generate_add_elements_admin_bar', 100 );
|
||||
/**
|
||||
* Add the Elementd admin bar item.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
function generate_add_elements_admin_bar() {
|
||||
$current_user_can = 'manage_options';
|
||||
|
||||
if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) {
|
||||
$current_user_can = 'edit_posts';
|
||||
}
|
||||
|
||||
if ( ! current_user_can( $current_user_can ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wp_admin_bar;
|
||||
global $generate_elements;
|
||||
|
||||
$title = __( 'Elements', 'gp-premium' );
|
||||
$count = ! empty( $generate_elements ) ? count( $generate_elements ) : 0;
|
||||
|
||||
// Prevent "Entire Site" Elements from being counted on non-edit pages in the admin.
|
||||
if ( is_admin() && function_exists( 'get_current_screen' ) ) {
|
||||
$screen = get_current_screen();
|
||||
|
||||
if ( ! isset( $screen->is_block_editor ) || ! $screen->is_block_editor ) {
|
||||
$count = 0;
|
||||
}
|
||||
|
||||
if ( 'edit' !== $screen->parent_base ) {
|
||||
$count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $count > 0 ) {
|
||||
$title = sprintf(
|
||||
/* translators: Active Element count. */
|
||||
__( 'Elements (%s)', 'gp-premium' ),
|
||||
$count
|
||||
);
|
||||
}
|
||||
|
||||
$wp_admin_bar->add_menu(
|
||||
array(
|
||||
'id' => 'gp_elements-menu',
|
||||
'title' => $title,
|
||||
'href' => esc_url( admin_url( 'edit.php?post_type=gp_elements' ) ),
|
||||
)
|
||||
);
|
||||
|
||||
if ( ! empty( $generate_elements ) ) {
|
||||
// Prevent "Entire Site" Elements from being counted on non-edit pages in the admin.
|
||||
if ( is_admin() && function_exists( 'get_current_screen' ) ) {
|
||||
$screen = get_current_screen();
|
||||
|
||||
if ( ! isset( $screen->is_block_editor ) || ! $screen->is_block_editor ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'edit' !== $screen->parent_base ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( (array) $generate_elements as $key => $data ) {
|
||||
$label = GeneratePress_Elements_Helper::get_element_type_label( $data['type'] );
|
||||
|
||||
$wp_admin_bar->add_menu(
|
||||
array(
|
||||
'id' => 'element-' . absint( $data['id'] ),
|
||||
'parent' => 'gp_elements-menu',
|
||||
'title' => get_the_title( $data['id'] ) . ' (' . $label . ')',
|
||||
'href' => get_edit_post_link( $data['id'] ),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user