100 lines
2.5 KiB
PHP
100 lines
2.5 KiB
PHP
|
<?php
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // No direct access, please.
|
||
|
}
|
||
|
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-elements-helper.php';
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-hooks.php';
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-hero.php';
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-layout.php';
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-conditions.php';
|
||
|
require plugin_dir_path( __FILE__ ) . 'class-post-type.php';
|
||
|
|
||
|
add_action( 'wp', 'generate_premium_do_elements' );
|
||
|
/**
|
||
|
* Execute our Elements.
|
||
|
*
|
||
|
* @since 1.7
|
||
|
*/
|
||
|
function generate_premium_do_elements() {
|
||
|
$args = array(
|
||
|
'post_type' => 'gp_elements',
|
||
|
'no_found_rows' => true,
|
||
|
'post_status' => 'publish',
|
||
|
'numberposts' => 500,
|
||
|
'fields' => 'ids',
|
||
|
'order' => 'ASC',
|
||
|
'suppress_filters' => false,
|
||
|
);
|
||
|
|
||
|
// Prevent Polylang from altering the query.
|
||
|
if ( function_exists( 'pll_get_post_language' ) ) {
|
||
|
$args['lang'] = '';
|
||
|
}
|
||
|
|
||
|
$posts = get_posts( $args );
|
||
|
|
||
|
foreach ( $posts as $post_id ) {
|
||
|
$post_id = apply_filters( 'generate_element_post_id', $post_id );
|
||
|
$type = get_post_meta( $post_id, '_generate_element_type', true );
|
||
|
|
||
|
if ( 'hook' === $type ) {
|
||
|
new GeneratePress_Hook( $post_id );
|
||
|
}
|
||
|
|
||
|
if ( 'header' === $type && ! GeneratePress_Hero::$instances ) {
|
||
|
new GeneratePress_Hero( $post_id );
|
||
|
}
|
||
|
|
||
|
if ( 'layout' === $type ) {
|
||
|
new GeneratePress_Site_Layout( $post_id );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
add_filter( 'generate_dashboard_tabs', 'generate_elements_dashboard_tab' );
|
||
|
/**
|
||
|
* Add the Sites tab to our Dashboard tabs.
|
||
|
*
|
||
|
* @since 1.6
|
||
|
*
|
||
|
* @param array $tabs Existing tabs.
|
||
|
* @return array New tabs.
|
||
|
*/
|
||
|
function generate_elements_dashboard_tab( $tabs ) {
|
||
|
$tabs['Elements'] = array(
|
||
|
'name' => __( 'Elements', 'gp-premium' ),
|
||
|
'url' => admin_url( 'edit.php?post_type=gp_elements' ),
|
||
|
'class' => '',
|
||
|
);
|
||
|
|
||
|
return $tabs;
|
||
|
}
|
||
|
|
||
|
add_filter( 'generate_element_post_id', 'generate_elements_ignore_languages' );
|
||
|
/**
|
||
|
* Disable Polylang elements if their language doesn't match.
|
||
|
* We disable their automatic quering so Elements with no language display by default.
|
||
|
*
|
||
|
* @since 1.8
|
||
|
*
|
||
|
* @param int $post_id
|
||
|
* @return bool|int
|
||
|
*/
|
||
|
function generate_elements_ignore_languages( $post_id ) {
|
||
|
if ( function_exists( 'pll_get_post_language' ) && function_exists( 'pll_current_language' ) ) {
|
||
|
$language = pll_get_post_language( $post_id, 'locale' );
|
||
|
$disable = get_post_meta( $post_id, '_generate_element_ignore_languages', true );
|
||
|
|
||
|
if ( $disable ) {
|
||
|
return $post_id;
|
||
|
}
|
||
|
|
||
|
if ( $language && $language !== pll_current_language( 'locale' ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $post_id;
|
||
|
}
|