_x( 'Fusion Templates', 'Layout type general name', 'fusion-builder' ), 'singular_name' => _x( 'Layout', 'Layout type singular name', 'fusion-builder' ), 'add_new' => _x( 'Add New', 'Layout item', 'fusion-builder' ), 'add_new_item' => esc_attr__( 'Add New Layout', 'fusion-builder' ), 'edit_item' => esc_attr__( 'Edit Layout', 'fusion-builder' ), 'new_item' => esc_attr__( 'New Layout', 'fusion-builder' ), 'all_items' => esc_attr__( 'All Layouts', 'fusion-builder' ), 'view_item' => esc_attr__( 'View Layout', 'fusion-builder' ), 'search_items' => esc_attr__( 'Search Layouts', 'fusion-builder' ), 'not_found' => esc_attr__( 'Nothing found', 'fusion-builder' ), 'not_found_in_trash' => esc_attr__( 'Nothing found in Trash', 'fusion-builder' ), 'parent_item_colon' => '', ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'can_export' => true, 'query_var' => true, 'has_archive' => false, 'capability_type' => 'post', 'map_meta_cap' => true, 'exclude_from_search' => true, 'hierarchical' => false, 'show_in_nav_menus' => false, 'show_ui' => true, 'show_in_menu' => false, 'supports' => array( 'title', 'editor', 'revisions' ), ); register_post_type( 'fusion_template', apply_filters( 'fusion_layout_template_args', $args ) ); $labels = array( 'name' => _x( 'Fusion Elements', 'element type general name', 'fusion-builder' ), 'singular_name' => _x( 'Element', 'Element type singular name', 'fusion-builder' ), 'add_new' => _x( 'Add New', 'Element item', 'fusion-builder' ), 'add_new_item' => esc_attr__( 'Add New Element', 'fusion-builder' ), 'edit_item' => esc_attr__( 'Edit Element', 'fusion-builder' ), 'new_item' => esc_attr__( 'New Element', 'fusion-builder' ), 'all_items' => esc_attr__( 'All Elements', 'fusion-builder' ), 'view_item' => esc_attr__( 'View Element', 'fusion-builder' ), 'search_items' => esc_attr__( 'Search Elements', 'fusion-builder' ), 'not_found' => esc_attr__( 'Nothing found', 'fusion-builder' ), 'not_found_in_trash' => esc_attr__( 'Nothing found in Trash', 'fusion-builder' ), 'parent_item_colon' => '', ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'can_export' => true, 'query_var' => false, 'has_archive' => false, 'capability_type' => 'post', 'map_meta_cap' => true, 'hierarchical' => false, 'supports' => array( 'title', 'editor', 'revisions' ), ); register_post_type( 'fusion_element', apply_filters( 'fusion_layout_element_args', $args ) ); $labels = array( 'name' => esc_attr__( 'Category', 'fusion-builder' ), ); register_taxonomy( 'element_category', array( 'fusion_element' ), array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => false, 'show_admin_column' => false, 'query_var' => true, 'show_in_nav_menus' => false, ) ); $labels = array( 'name' => esc_attr__( 'Category', 'fusion-builder' ), ); register_taxonomy( 'template_category', array( 'fusion_template' ), array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => false, 'show_admin_column' => false, 'query_var' => true, 'show_in_nav_menus' => false, ) ); } add_action( 'admin_init', 'fusion_builder_register_layouts' ); /** * Delete custom template or element. */ function fusion_builder_delete_layout() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['fusion_layout_id'] ) && '' !== $_POST['fusion_layout_id'] ) { $layout_id = (int) $_POST['fusion_layout_id']; if ( '' === $layout_id ) { die( -1 ); } wp_delete_post( $layout_id, true ); } die(); } add_action( 'wp_ajax_fusion_builder_delete_layout', 'fusion_builder_delete_layout' ); /** * Add custom template or element. * * @param string $post_type The post-type. * @param string $name The post-title. * @param string $content The post-content. * @param array $meta The post-meta. * @param array $taxonomy Taxonomies. * @param string $term Term. */ function fusion_builder_create_layout( $post_type, $name, $content, $meta = array(), $taxonomy = array(), $term = '' ) { $layout = array( 'post_title' => sanitize_text_field( $name ), 'post_content' => $content, 'post_status' => 'publish', 'post_type' => $post_type, ); $layout_id = wp_insert_post( $layout ); if ( ! empty( $meta ) ) { foreach ( $meta as $meta_key => $meta_value ) { add_post_meta( $layout_id, $meta_key, sanitize_text_field( $meta_value ) ); } } if ( '' !== $term ) { wp_insert_term( $term, $taxonomy ); $term_id = term_exists( $term, $taxonomy ); wp_set_post_terms( $layout_id, $term_id, $taxonomy ); } do_action( 'fusion_builder_create_layout_after' ); return $layout_id; } /** * Display library tab content. */ function fusion_builder_display_library_content() { global $post; $saved_post = $post; ?>

$fusion_builder_demo ) : ?>
    $page ) : ?>

global element.', 'fusion-builder' ), 'https://theme-fusion.com/documentation/fusion-builder/technical/page-content-not-parsable-fusion-builder/' ); ?>
'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => array( array( 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'sections', ), ), ) ); ?> have_posts() ) : ?>
    have_posts() ) : $query->the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; ?>

global element.', 'fusion-builder' ), 'https://theme-fusion.com/documentation/fusion-builder/technical/page-content-not-parsable-fusion-builder/' ); ?>
'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => array( array( 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'columns', ), ), ) ); ?> have_posts() ) : ?>
    have_posts() ) : $query->the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; ?>

global element.', 'fusion-builder' ), 'https://theme-fusion.com/documentation/fusion-builder/technical/page-content-not-parsable-fusion-builder/' ); ?>
'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => array( array( 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'elements', ), ), ) ); ?> have_posts() ) : ?>
    have_posts() ) : $query->the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; $element_type = esc_attr( get_post_meta( $post->ID, '_fusion_element_type', true ) ); ?>

' ); ?>

'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => array( array( 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => $cat, ), ), ) ); if ( $query->have_posts() ) : ?>

post_content, ']' ); if ( false !== $position ) { $layout->post_content = apply_filters( 'content_edit_pre', $layout->post_content, $layout->post_content, $layout_id ); $layout->post_content = substr_replace( $layout->post_content, ' fusion_global="' . $layout_id . '"]', $position, 1 ); } } if ( $layout ) { // Set page content. $data['post_content'] = apply_filters( 'content_edit_pre', $layout->post_content, $layout_id ); // Set page template. if ( 'fusion_template' == get_post_type( $layout_id ) ) { $page_template = get_post_meta( $layout_id, '_wp_page_template', true ); if ( isset( $page_template ) && ! empty( $page_template ) ) { $data['page_template'] = $page_template; } $custom_css = get_post_meta( $layout_id, '_fusion_builder_custom_css', true ); $data['post_meta'] = get_post_meta( $layout_id ); if ( isset( $custom_css ) && ! empty( $custom_css ) ) { $data['custom_css'] = $custom_css; } } } $json_data = wp_json_encode( $data ); die( $json_data ); // XPCS: XSS ok. } add_action( 'wp_ajax_fusion_builder_load_layout', 'fusion_builder_load_layout' ); /** * Load custom page layout. */ function fusion_builder_load_demo() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( ! isset( $_POST['page_name'] ) && '' === $_POST['page_name'] ) { die( -1 ); } if ( ! isset( $_POST['demo_name'] ) && '' === $_POST['demo_name'] ) { die( -1 ); } if ( ! isset( $_POST['post_id'] ) && '' === $_POST['post_id'] ) { die( -1 ); } $data = array(); $page_name = $_POST['page_name']; $demo_name = $_POST['demo_name']; $post_id = (int) $_POST['post_id']; $fusion_builder_demos = apply_filters( 'fusion_builder_get_demo_pages', array() ); if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) ) { // Set page content. $data['post_content'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['content']; // Set page template. $page_template = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['page_template']; if ( isset( $page_template ) && ! empty( $page_template ) ) { $data['page_template'] = $page_template; } } if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) ) { $data['meta'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta']; } $json_data = wp_json_encode( $data ); die( $json_data ); // XPCS: XSS ok. } add_action( 'wp_ajax_fusion_builder_load_demo', 'fusion_builder_load_demo' ); /** * Save custom layout. */ function fusion_builder_save_layout() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['fusion_layout_name'] ) && '' !== $_POST['fusion_layout_name'] ) { $layout_name = $_POST['fusion_layout_name']; $taxonomy = 'element_category'; $term = ''; $meta = array(); $layout_type = ''; $global_data = ''; $global_type = array( 'elements' => 'element', 'columns' => 'column', 'sections' => 'container', ); if ( isset( $_POST['fusion_layout_post_type'] ) && '' !== $_POST['fusion_layout_post_type'] ) { $post_type = $_POST['fusion_layout_post_type']; if ( isset( $_POST['fusion_current_post_id'] ) && '' !== $_POST['fusion_current_post_id'] ) { $post_id = $_POST['fusion_current_post_id']; } if ( isset( $_POST['fusion_layout_element_type'] ) && '' !== $_POST['fusion_layout_element_type'] ) { $meta['_fusion_element_type'] = $_POST['fusion_layout_element_type']; $layout_type = ' fusion-element-type-' . $_POST['fusion_layout_element_type']; } if ( 'fusion_template' == $post_type ) { $meta['fusion_builder_status'] = 'active'; // Save custom css. if ( isset( $_POST['fusion_custom_css'] ) && '' !== $_POST['fusion_custom_css'] ) { $meta['_fusion_builder_custom_css'] = $_POST['fusion_custom_css']; } // Save page template. if ( isset( $_POST['fusion_page_template'] ) && '' !== $_POST['fusion_page_template'] ) { $meta['_wp_page_template'] = $_POST['fusion_page_template']; } // Save globals. @codingStandardsIgnoreLine $_POST['fusion_layout_content'] = apply_filters( 'content_save_pre', $_POST['fusion_layout_content'] ); } // Globals. if ( isset( $_POST['fusion_save_global'] ) && 'false' !== $_POST['fusion_save_global'] ) { $meta['_fusion_is_global'] = 'yes'; $global_data = 'fusion-global'; } else { $position = false; if ( isset( $_POST['fusion_layout_content'] ) ) { $position = strpos( $_POST['fusion_layout_content'], 'fusion_global' ); } if ( false !== $position ) { // Remove fusion_global attributes from content if it is simple library element. @codingStandardsIgnoreLine $_POST['fusion_layout_content'] = preg_replace( '/fusion_global=[^][^][0-9]*[^][^]/' , '', $_POST['fusion_layout_content'] ); } } // Add Fusion Options to meta data. if ( isset( $_POST['fusion_options'] ) && '' !== $_POST['fusion_options'] && is_array( $_POST['fusion_options'] ) ) { foreach ( $_POST['fusion_options'] as $option ) { $meta[ $option[0] ] = $option[1]; } } // Post category. if ( isset( $_POST['fusion_layout_new_cat'] ) && '' !== $_POST['fusion_layout_new_cat'] ) { $term = $_POST['fusion_layout_new_cat']; $global_type = $global_type[ $term ]; } $post_fusion_layout_content = ( isset( $_POST['fusion_layout_content'] ) ) ? $_POST['fusion_layout_content'] : ''; $new_layout_id = fusion_builder_create_layout( $post_type, $layout_name, $post_fusion_layout_content, $meta, $taxonomy, $term ); ?>
  • ' . esc_attr__( 'How To Load Template?', 'fusion-builder' ) . '
    ' . esc_attr__( 'Replace all page content', 'fusion-builder' ) . '' . esc_attr__( 'Insert above current content', 'fusion-builder' ) . '' . esc_attr__( 'Insert below current content', 'fusion-builder' ) . '
    ' ); ?>
  • $layout_id, 'post_content' => $content, ); wp_update_post( $post ); } die(); } add_action( 'wp_ajax_fusion_builder_update_layout', 'fusion_builder_update_layout' ); /** * Get image URL from image ID. */ function fusion_builder_get_image_url() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( ! isset( $_POST['fusion_image_ids'] ) && '' === $_POST['fusion_image_ids'] ) { die( -1 ); } $data = array(); $image_ids = $_POST['fusion_image_ids']; foreach ( $image_ids as $image_id ) { if ( '' !== $image_id ) { $image_url = wp_get_attachment_url( $image_id, 'thumbnail' ); $image_html = '
    '; $image_html .= ''; $image_html .= ''; $image_html .= '
    '; $data['images'][] = $image_html; } } $json_data = wp_json_encode( $data ); die( $json_data ); // WPCS: XSS ok. } add_action( 'wp_ajax_fusion_builder_get_image_url', 'fusion_builder_get_image_url' );