_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 ) : ?>
'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;
?>
-
'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;
?>
-
'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_template',
'posts_per_page' => '-1',
)
);
?>
'
);
?>
'publish',
'post_type' => 'fusion_element',
'posts_per_page' => '-1',
'tax_query' => array(
array(
'taxonomy' => 'element_category',
'field' => 'slug',
'terms' => $cat,
),
),
)
);
if ( $query->have_posts() ) :
?>
have_posts() ) : ?>
the_post(); ?>
ID, '_fusion_element_type', true ) ); ?>
-
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' );