Files

70 lines
2.5 KiB
Plaintext

function et_pb_submit_layout( $args ) {
/**
* Filters the layout data passed to {@see et_pb_submit_layout()}.
*
* @since 3.0.99
*
* @param string[] $args See {@see et_pb_submit_layout()} for array structure definition.
*/
$args = apply_filters( 'et_pb_submit_layout_args', $args );
if ( empty( $args ) ) {
return '';
}
$layout_cats_processed = array();
$layout_tags_processed = array();
if ( '' !== $args['layout_selected_cats'] ) {
$layout_cats_array = explode( ',', $args['layout_selected_cats'] );
$layout_cats_processed = array_map( 'intval', $layout_cats_array );
}
if ( '' !== $args['layout_selected_tags'] ) {
$layout_tags_array = explode( ',', $args['layout_selected_tags'] );
$layout_tags_processed = array_map( 'intval', $layout_tags_array );
}
$meta = array();
if ( 'row' === $args['layout_type'] && '0' !== $args['columns_layout'] ) {
$meta = array_merge( $meta, array( '_et_pb_row_layout' => $args['columns_layout'] ) );
}
if ( 'module' === $args['layout_type'] ) {
$meta = array_merge( $meta, array( '_et_pb_module_type' => $args['module_type'] ) );
// save unsynced options for global modules. Always empty for new modules.
if ( 'global' === $args['layout_scope'] ) {
$meta = array_merge( $meta, array( '_et_pb_excluded_global_options' => wp_json_encode( array() ) ) );
}
}
// et_layouts_built_for_post_type.
$meta = array_merge(
$meta,
array(
'_et_pb_built_for_post_type' => $args['built_for_post_type'],
'_et_pb_template_type' => $args['template_type'] ?? '',
)
);
$tax_input = array(
'scope' => $args['layout_scope'],
'layout_type' => $args['layout_type'],
'module_width' => $args['module_width'],
'layout_category' => $layout_cats_processed,
'layout_tag' => $layout_tags_processed,
'layout_location' => et_()->array_get_sanitized( $args, 'layout_location', 'local' ),
);
$post_date = isset( $args['post_date'] ) && ! empty( $args['post_date'] ) ? $args['post_date'] : null;
$new_layout_id = et_pb_create_layout( $args['layout_name'], $args['layout_content'], $meta, $tax_input, $args['layout_new_cat'], $args['layout_new_tag'], 'publish', $post_date );
$new_post_data['post_id'] = (int) $new_layout_id;
$new_post_data['edit_link'] = esc_url_raw( get_edit_post_link( $new_layout_id ) );
$json_post_data = wp_json_encode( $new_post_data );
return $json_post_data;
}