Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../themes/Divi/includes/builder/frontend.../theme-bu...
File: theme-builder.php
$flat[ $setting['id'] ] = $setting;
[1000] Fix | Delete
}
[1001] Fix | Delete
}
[1002] Fix | Delete
[1003] Fix | Delete
return $flat;
[1004] Fix | Delete
}
[1005] Fix | Delete
[1006] Fix | Delete
function et_theme_builder_get_template_setting_child_options( $parent, $include = array(), $search = '', $page = 1, $per_page = 30 ) {
[1007] Fix | Delete
$include = array_map( 'intval', $include );
[1008] Fix | Delete
[1009] Fix | Delete
if ( ! empty( $include ) ) {
[1010] Fix | Delete
$search = '';
[1011] Fix | Delete
$page = 1;
[1012] Fix | Delete
$per_page = -1;
[1013] Fix | Delete
}
[1014] Fix | Delete
[1015] Fix | Delete
$page = $page >= 1 ? $page : 1;
[1016] Fix | Delete
$values = array();
[1017] Fix | Delete
[1018] Fix | Delete
/**
[1019] Fix | Delete
* Fires before loading child options from the database.
[1020] Fix | Delete
*
[1021] Fix | Delete
* @since 4.2
[1022] Fix | Delete
*
[1023] Fix | Delete
* @param string $parent_id
[1024] Fix | Delete
* @param string $child_type
[1025] Fix | Delete
* @param string $child_value
[1026] Fix | Delete
*/
[1027] Fix | Delete
do_action( 'et_theme_builder_before_get_template_setting_child_options', $parent['id'], $parent['options']['type'], $parent['options']['value'] );
[1028] Fix | Delete
[1029] Fix | Delete
switch ( $parent['options']['type'] ) {
[1030] Fix | Delete
case 'post_type':
[1031] Fix | Delete
$posts = get_posts( array(
[1032] Fix | Delete
'post_type' => $parent['options']['value'],
[1033] Fix | Delete
'post_status' => 'any',
[1034] Fix | Delete
'post__in' => $include,
[1035] Fix | Delete
's' => $search,
[1036] Fix | Delete
'posts_per_page' => $per_page,
[1037] Fix | Delete
'paged' => $page,
[1038] Fix | Delete
) );
[1039] Fix | Delete
[1040] Fix | Delete
foreach ( $posts as $post ) {
[1041] Fix | Delete
$id = $parent['id'] . $post->ID;
[1042] Fix | Delete
$values[ $id ] = array(
[1043] Fix | Delete
'id' => $id,
[1044] Fix | Delete
'parent' => $parent['id'],
[1045] Fix | Delete
'label' => et_core_intentionally_unescaped( $post->post_title, 'react_jsx' ),
[1046] Fix | Delete
'title' => et_core_intentionally_unescaped( $post->post_name, 'react_jsx' ),
[1047] Fix | Delete
'priority' => $parent['priority'],
[1048] Fix | Delete
'validate' => $parent['validate'],
[1049] Fix | Delete
);
[1050] Fix | Delete
}
[1051] Fix | Delete
break;
[1052] Fix | Delete
[1053] Fix | Delete
case 'taxonomy':
[1054] Fix | Delete
$terms = get_terms( array(
[1055] Fix | Delete
'taxonomy' => $parent['options']['value'],
[1056] Fix | Delete
'hide_empty' => false,
[1057] Fix | Delete
'include' => $include,
[1058] Fix | Delete
'search' => $search,
[1059] Fix | Delete
'number' => -1 === $per_page ? false : $per_page,
[1060] Fix | Delete
'offset' => -1 !== $per_page ? ($page - 1) * $per_page : 0,
[1061] Fix | Delete
) );
[1062] Fix | Delete
[1063] Fix | Delete
foreach ( $terms as $term ) {
[1064] Fix | Delete
$id = $parent['id'] . $term->term_id;
[1065] Fix | Delete
$values[ $id ] = array(
[1066] Fix | Delete
'id' => $id,
[1067] Fix | Delete
'parent' => $parent['id'],
[1068] Fix | Delete
'label' => et_core_intentionally_unescaped( $term->name, 'react_jsx' ),
[1069] Fix | Delete
'title' => et_core_intentionally_unescaped( $term->slug, 'react_jsx' ),
[1070] Fix | Delete
'priority' => $parent['priority'],
[1071] Fix | Delete
'validate' => $parent['validate'],
[1072] Fix | Delete
);
[1073] Fix | Delete
}
[1074] Fix | Delete
break;
[1075] Fix | Delete
[1076] Fix | Delete
case 'user':
[1077] Fix | Delete
$users = get_users( array(
[1078] Fix | Delete
'include' => $include,
[1079] Fix | Delete
'search' => $search,
[1080] Fix | Delete
'number' => $per_page,
[1081] Fix | Delete
'paged' => $page,
[1082] Fix | Delete
) );
[1083] Fix | Delete
[1084] Fix | Delete
foreach ( $users as $user ) {
[1085] Fix | Delete
$id = $parent['id'] . $user->ID;
[1086] Fix | Delete
$values[ $id ] = array(
[1087] Fix | Delete
'id' => $id,
[1088] Fix | Delete
'parent' => $parent['id'],
[1089] Fix | Delete
'label' => et_core_intentionally_unescaped( $user->display_name, 'react_jsx' ),
[1090] Fix | Delete
'title' => et_core_intentionally_unescaped( $user->user_login, 'react_jsx' ),
[1091] Fix | Delete
'priority' => $parent['priority'],
[1092] Fix | Delete
'validate' => $parent['validate'],
[1093] Fix | Delete
);
[1094] Fix | Delete
}
[1095] Fix | Delete
break;
[1096] Fix | Delete
[1097] Fix | Delete
case 'user_role':
[1098] Fix | Delete
$roles = wp_roles()->get_names();
[1099] Fix | Delete
[1100] Fix | Delete
foreach ( $roles as $role => $label ) {
[1101] Fix | Delete
$id = $parent['id'] . $role;
[1102] Fix | Delete
$values[ $id ] = array(
[1103] Fix | Delete
'id' => $id,
[1104] Fix | Delete
'parent' => $parent['id'],
[1105] Fix | Delete
'label' => et_core_intentionally_unescaped( $label, 'react_jsx' ),
[1106] Fix | Delete
'title' => et_core_intentionally_unescaped( $role, 'react_jsx' ),
[1107] Fix | Delete
'priority' => $parent['priority'],
[1108] Fix | Delete
'validate' => $parent['validate'],
[1109] Fix | Delete
);
[1110] Fix | Delete
}
[1111] Fix | Delete
break;
[1112] Fix | Delete
}
[1113] Fix | Delete
[1114] Fix | Delete
/**
[1115] Fix | Delete
* Fires after loading child options from the database.
[1116] Fix | Delete
*
[1117] Fix | Delete
* @since 4.2
[1118] Fix | Delete
*
[1119] Fix | Delete
* @param string $parent_id
[1120] Fix | Delete
* @param string $child_type
[1121] Fix | Delete
* @param string $child_value
[1122] Fix | Delete
*/
[1123] Fix | Delete
do_action( 'et_theme_builder_after_get_template_setting_child_options', $parent['id'], $parent['options']['type'], $parent['options']['value'] );
[1124] Fix | Delete
[1125] Fix | Delete
return $values;
[1126] Fix | Delete
}
[1127] Fix | Delete
[1128] Fix | Delete
/**
[1129] Fix | Delete
* Get the template and its layouts, if any, for the given request.
[1130] Fix | Delete
*
[1131] Fix | Delete
* @since 4.0
[1132] Fix | Delete
*
[1133] Fix | Delete
* @param ET_Theme_Builder_Request $request Request to check against. Defaults to the current one.
[1134] Fix | Delete
* @param bool $cache Cache the result or not, regardless of whether any layouts should be loaded.
[1135] Fix | Delete
* @param bool $load_from_cache Load the cached result for the given post ID, if available.
[1136] Fix | Delete
*
[1137] Fix | Delete
* @return array Array of layouts or an empty array if no layouts should be loaded.
[1138] Fix | Delete
*/
[1139] Fix | Delete
function et_theme_builder_get_template_layouts( $request = null, $cache = true, $load_from_cache = true ) {
[1140] Fix | Delete
static $store = array();
[1141] Fix | Delete
[1142] Fix | Delete
if ( null === $request ) {
[1143] Fix | Delete
if ( is_embed() ) {
[1144] Fix | Delete
// Ignore TB templates when displaying posts intended for embedding.
[1145] Fix | Delete
return array();
[1146] Fix | Delete
}
[1147] Fix | Delete
[1148] Fix | Delete
if ( is_et_pb_preview() ) {
[1149] Fix | Delete
// Ignore TB templates when previewing.
[1150] Fix | Delete
return array();
[1151] Fix | Delete
}
[1152] Fix | Delete
[1153] Fix | Delete
$request = ET_Theme_Builder_Request::from_current();
[1154] Fix | Delete
}
[1155] Fix | Delete
[1156] Fix | Delete
if ( null === $request || ET_GB_Block_Layout::is_layout_block_preview() ) {
[1157] Fix | Delete
return array();
[1158] Fix | Delete
}
[1159] Fix | Delete
[1160] Fix | Delete
$cache_key = "{$request->get_type()}:{$request->get_subtype()}:{$request->get_id()}";
[1161] Fix | Delete
[1162] Fix | Delete
if ( $load_from_cache && isset( $store[ $cache_key ] ) ) {
[1163] Fix | Delete
return $store[ $cache_key ];
[1164] Fix | Delete
}
[1165] Fix | Delete
[1166] Fix | Delete
$post_type = ET_Theme_Builder_Request::TYPE_SINGULAR === $request->get_type() ? $request->get_subtype() : '';
[1167] Fix | Delete
$layouts = array();
[1168] Fix | Delete
[1169] Fix | Delete
if ( et_theme_builder_is_layout_post_type( $post_type ) ) {
[1170] Fix | Delete
// We are currently editing a layout in the VB.
[1171] Fix | Delete
$layouts = array_replace( array(
[1172] Fix | Delete
ET_THEME_BUILDER_TEMPLATE_POST_TYPE => 0,
[1173] Fix | Delete
ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE => array( 'id' => 0, 'enabled' => false, 'override' => true ),
[1174] Fix | Delete
ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE => array( 'id' => 0, 'enabled' => false, 'override' => true ),
[1175] Fix | Delete
ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE => array( 'id' => 0, 'enabled' => false, 'override' => true ),
[1176] Fix | Delete
), array(
[1177] Fix | Delete
$post_type => array( 'id' => $request->get_id(), 'enabled' => true, 'override' => true ),
[1178] Fix | Delete
) );
[1179] Fix | Delete
} else {
[1180] Fix | Delete
// We are currently displaying a template in the FE.
[1181] Fix | Delete
$templates = et_theme_builder_get_theme_builder_templates( true );
[1182] Fix | Delete
$settings = et_theme_builder_get_flat_template_settings_options();
[1183] Fix | Delete
$template = $request->get_template( $templates, $settings );
[1184] Fix | Delete
[1185] Fix | Delete
if ( ! empty( $template ) ) {
[1186] Fix | Delete
$is_default = $template['default'];
[1187] Fix | Delete
$override_header = $template['layouts']['header']['override'];
[1188] Fix | Delete
$override_body = $template['layouts']['body']['override'];
[1189] Fix | Delete
$override_footer = $template['layouts']['footer']['override'];
[1190] Fix | Delete
[1191] Fix | Delete
// The Default Website Template has a special case - it should not take over if
[1192] Fix | Delete
// it does not override any areas otherwise it will take over ALL site pages.
[1193] Fix | Delete
if ( ! $is_default || $override_header || $override_body || $override_footer ) {
[1194] Fix | Delete
$layouts = array(
[1195] Fix | Delete
ET_THEME_BUILDER_TEMPLATE_POST_TYPE => $template['id'],
[1196] Fix | Delete
ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE => $template['layouts']['header'],
[1197] Fix | Delete
ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE => $template['layouts']['body'],
[1198] Fix | Delete
ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE => $template['layouts']['footer'],
[1199] Fix | Delete
);
[1200] Fix | Delete
}
[1201] Fix | Delete
}
[1202] Fix | Delete
}
[1203] Fix | Delete
[1204] Fix | Delete
/**
[1205] Fix | Delete
* Filter template layouts.
[1206] Fix | Delete
*
[1207] Fix | Delete
* @since 4.0
[1208] Fix | Delete
*
[1209] Fix | Delete
* @param array $layouts
[1210] Fix | Delete
*/
[1211] Fix | Delete
$layouts = apply_filters( 'et_theme_builder_template_layouts', $layouts );
[1212] Fix | Delete
[1213] Fix | Delete
if ( $cache ) {
[1214] Fix | Delete
$store[ $cache_key ] = $layouts;
[1215] Fix | Delete
}
[1216] Fix | Delete
[1217] Fix | Delete
return $layouts;
[1218] Fix | Delete
}
[1219] Fix | Delete
[1220] Fix | Delete
/**
[1221] Fix | Delete
* Get whether TB overrides the specified layout for the current request.
[1222] Fix | Delete
*
[1223] Fix | Delete
* @since 4.0.6
[1224] Fix | Delete
*
[1225] Fix | Delete
* @param string $layout Layout post type.
[1226] Fix | Delete
*
[1227] Fix | Delete
* @return boolean
[1228] Fix | Delete
*/
[1229] Fix | Delete
function et_theme_builder_overrides_layout( $layout ) {
[1230] Fix | Delete
$layouts = et_theme_builder_get_template_layouts();
[1231] Fix | Delete
[1232] Fix | Delete
return ! empty( $layouts ) && $layouts[ $layout ]['override'];
[1233] Fix | Delete
}
[1234] Fix | Delete
[1235] Fix | Delete
/**
[1236] Fix | Delete
* Get whether the specified layout will properly render the real post content.
[1237] Fix | Delete
*
[1238] Fix | Delete
* @since 4.0
[1239] Fix | Delete
*
[1240] Fix | Delete
* @param array $layout
[1241] Fix | Delete
*
[1242] Fix | Delete
* @return boolean
[1243] Fix | Delete
*/
[1244] Fix | Delete
function et_theme_builder_layout_has_post_content( $layout ) {
[1245] Fix | Delete
if ( ! $layout['override'] ) {
[1246] Fix | Delete
// The layout does not override the content so post content will render.
[1247] Fix | Delete
return true;
[1248] Fix | Delete
}
[1249] Fix | Delete
[1250] Fix | Delete
if ( $layout['enabled'] ) {
[1251] Fix | Delete
$content = get_post_field( 'post_content', $layout['id'] );
[1252] Fix | Delete
$modules = et_theme_builder_get_post_content_modules();
[1253] Fix | Delete
[1254] Fix | Delete
foreach ( $modules as $module ) {
[1255] Fix | Delete
if ( has_shortcode( $content, $module ) ) {
[1256] Fix | Delete
return true;
[1257] Fix | Delete
}
[1258] Fix | Delete
}
[1259] Fix | Delete
}
[1260] Fix | Delete
[1261] Fix | Delete
return false;
[1262] Fix | Delete
}
[1263] Fix | Delete
[1264] Fix | Delete
/**
[1265] Fix | Delete
* Get the failure modal html for a template that overrides the body but does not display
[1266] Fix | Delete
* post content (e.g. Post Content module is missing or the body has been disabled).
[1267] Fix | Delete
*
[1268] Fix | Delete
* @param string $template_name
[1269] Fix | Delete
* @param boolean $layout_enabled
[1270] Fix | Delete
*
[1271] Fix | Delete
* @return string
[1272] Fix | Delete
*/
[1273] Fix | Delete
function et_theme_builder_get_failure_notification_modal( $template_name, $layout_enabled ) {
[1274] Fix | Delete
$i18n = require ET_BUILDER_DIR . 'frontend-builder/i18n/theme-builder.php';
[1275] Fix | Delete
$error = $i18n['This post has been assigned a template using the Theme Builder, however, the template being used does not contain a Post Content module.'];
[1276] Fix | Delete
$description = $i18n['A Post Content module is required in order to add unique content within the Theme Builder template.'];
[1277] Fix | Delete
[1278] Fix | Delete
if ( ! $layout_enabled ) {
[1279] Fix | Delete
$error = $i18n['Oops, it looks like the current Theme Builder Template body layout is disabled.'];
[1280] Fix | Delete
$description = $i18n['The body layout of a template should not be disabled if you wish to display and edit the content of individual posts using this layout.'];
[1281] Fix | Delete
}
[1282] Fix | Delete
[1283] Fix | Delete
$output = sprintf(
[1284] Fix | Delete
'<div class="et-core-modal-overlay et-theme-builder-no-post-content et-core-active">
[1285] Fix | Delete
<div class="et-core-modal">
[1286] Fix | Delete
<div class="et-core-modal-header">
[1287] Fix | Delete
<h3 class="et-core-modal-title">%1$s</h3>
[1288] Fix | Delete
<a href="#" class="et-core-modal-close" data-et-core-modal="close"></a>
[1289] Fix | Delete
</div>
[1290] Fix | Delete
[1291] Fix | Delete
<div class="et-core-modal-content">
[1292] Fix | Delete
<p>%2$s</p>
[1293] Fix | Delete
<p>%3$s</p>
[1294] Fix | Delete
<p>%4$s</p>
[1295] Fix | Delete
</div>
[1296] Fix | Delete
[1297] Fix | Delete
<div class="et_pb_prompt_buttons">
[1298] Fix | Delete
<br>
[1299] Fix | Delete
<span class="spinner"></span>
[1300] Fix | Delete
<a href="%6$s" class="et-core-modal-action">%5$s</a>
[1301] Fix | Delete
</div>
[1302] Fix | Delete
</div>
[1303] Fix | Delete
</div>',
[1304] Fix | Delete
esc_html__( 'Missing Post Content Module', 'et_builder' ),
[1305] Fix | Delete
esc_html__( $error, 'et_builder' ),
[1306] Fix | Delete
esc_html__( $description, 'et_builder' ),
[1307] Fix | Delete
esc_html( sprintf( __( 'Current template: %1$s', 'et_builder' ), $template_name ) ),
[1308] Fix | Delete
esc_html__( 'Edit Theme Builder', 'et_builder' ),
[1309] Fix | Delete
esc_url( admin_url( 'admin.php?page=et_theme_builder' ) )
[1310] Fix | Delete
);
[1311] Fix | Delete
[1312] Fix | Delete
return $output;
[1313] Fix | Delete
}
[1314] Fix | Delete
[1315] Fix | Delete
/**
[1316] Fix | Delete
* Create or update a Theme Builder template.
[1317] Fix | Delete
*
[1318] Fix | Delete
* @since 4.0
[1319] Fix | Delete
*
[1320] Fix | Delete
* @param integer $theme_builder_id
[1321] Fix | Delete
* @param array $template
[1322] Fix | Delete
* @param boolean $allow_default
[1323] Fix | Delete
*
[1324] Fix | Delete
* @return integer
[1325] Fix | Delete
*/
[1326] Fix | Delete
function et_theme_builder_store_template( $theme_builder_id, $template, $allow_default ) {
[1327] Fix | Delete
$_ = et_();
[1328] Fix | Delete
$raw_post_id = $_->array_get( $template, 'id', 0 );
[1329] Fix | Delete
$post_id = is_numeric( $raw_post_id ) ? (int) $raw_post_id : 0;
[1330] Fix | Delete
$title = sanitize_text_field( $_->array_get( $template, 'title', '' ) );
[1331] Fix | Delete
$default = $allow_default && '1' === $_->array_get( $template, 'default', '1' );
[1332] Fix | Delete
$enabled = '1' === $_->array_get( $template, 'enabled', '1' );
[1333] Fix | Delete
$header_id = (int) $_->array_get( $template, 'layouts.header.id', 0 );
[1334] Fix | Delete
$header_enabled = (bool) $_->array_get( $template, 'layouts.header.enabled', true );
[1335] Fix | Delete
$body_id = (int) $_->array_get( $template, 'layouts.body.id', 0 );
[1336] Fix | Delete
$body_enabled = (bool) $_->array_get( $template, 'layouts.body.enabled', true );
[1337] Fix | Delete
$footer_id = (int) $_->array_get( $template, 'layouts.footer.id', 0 );
[1338] Fix | Delete
$footer_enabled = (bool) $_->array_get( $template, 'layouts.footer.enabled', true );
[1339] Fix | Delete
$use_on = array_map( 'sanitize_text_field', $_->array_get( $template, 'use_on', array() ) );
[1340] Fix | Delete
$exclude_from = array_map( 'sanitize_text_field', $_->array_get( $template, 'exclude_from', array() ) );
[1341] Fix | Delete
$exists = ET_THEME_BUILDER_TEMPLATE_POST_TYPE === get_post_type( $post_id ) && 'publish' === get_post_status( $post_id );
[1342] Fix | Delete
$autogenerated_title = '1' === $_->array_get( $template, 'autogenerated_title', '1' );
[1343] Fix | Delete
[1344] Fix | Delete
if ( ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE !== get_post_type( $header_id ) || 'publish' !== get_post_status( $header_id ) ) {
[1345] Fix | Delete
$header_id = 0;
[1346] Fix | Delete
}
[1347] Fix | Delete
[1348] Fix | Delete
if ( ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE !== get_post_type( $body_id ) || 'publish' !== get_post_status( $body_id ) ) {
[1349] Fix | Delete
$body_id = 0;
[1350] Fix | Delete
}
[1351] Fix | Delete
[1352] Fix | Delete
if ( ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE !== get_post_type( $footer_id ) || 'publish' !== get_post_status( $footer_id ) ) {
[1353] Fix | Delete
$footer_id = 0;
[1354] Fix | Delete
}
[1355] Fix | Delete
[1356] Fix | Delete
if ( $exists ) {
[1357] Fix | Delete
wp_update_post( array(
[1358] Fix | Delete
'ID' => $post_id,
[1359] Fix | Delete
'post_title' => $title,
[1360] Fix | Delete
) );
[1361] Fix | Delete
} else {
[1362] Fix | Delete
$post_id = wp_insert_post( array(
[1363] Fix | Delete
'post_type' => ET_THEME_BUILDER_TEMPLATE_POST_TYPE,
[1364] Fix | Delete
'post_status' => 'publish',
[1365] Fix | Delete
'post_title' => $title,
[1366] Fix | Delete
) );
[1367] Fix | Delete
}
[1368] Fix | Delete
[1369] Fix | Delete
update_post_meta( $post_id, '_et_autogenerated_title', $autogenerated_title ? '1' : '0' );
[1370] Fix | Delete
update_post_meta( $post_id, '_et_default', $default ? '1' : '0' );
[1371] Fix | Delete
update_post_meta( $post_id, '_et_enabled', $enabled ? '1' : '0' );
[1372] Fix | Delete
update_post_meta( $post_id, '_et_header_layout_id', $header_id );
[1373] Fix | Delete
update_post_meta( $post_id, '_et_header_layout_enabled', $header_enabled ? '1' : '0' );
[1374] Fix | Delete
update_post_meta( $post_id, '_et_body_layout_id', $body_id );
[1375] Fix | Delete
update_post_meta( $post_id, '_et_body_layout_enabled', $body_enabled ? '1' : '0' );
[1376] Fix | Delete
update_post_meta( $post_id, '_et_footer_layout_id', $footer_id );
[1377] Fix | Delete
update_post_meta( $post_id, '_et_footer_layout_enabled', $footer_enabled ? '1' : '0' );
[1378] Fix | Delete
[1379] Fix | Delete
delete_post_meta( $post_id, '_et_use_on' );
[1380] Fix | Delete
foreach ( $use_on as $condition ) {
[1381] Fix | Delete
add_post_meta( $post_id, '_et_use_on', $condition );
[1382] Fix | Delete
}
[1383] Fix | Delete
[1384] Fix | Delete
delete_post_meta( $post_id, '_et_exclude_from' );
[1385] Fix | Delete
foreach ( $exclude_from as $condition ) {
[1386] Fix | Delete
add_post_meta( $post_id, '_et_exclude_from', $condition );
[1387] Fix | Delete
}
[1388] Fix | Delete
[1389] Fix | Delete
$templates = get_post_meta( $theme_builder_id, '_et_template', false );
[1390] Fix | Delete
if ( ! in_array( $post_id, $templates, true ) ) {
[1391] Fix | Delete
add_post_meta( $theme_builder_id, '_et_template', $post_id );
[1392] Fix | Delete
}
[1393] Fix | Delete
[1394] Fix | Delete
return $post_id;
[1395] Fix | Delete
}
[1396] Fix | Delete
[1397] Fix | Delete
/**
[1398] Fix | Delete
* Sanitize a Theme Builder template.
[1399] Fix | Delete
*
[1400] Fix | Delete
* @since 4.0
[1401] Fix | Delete
*
[1402] Fix | Delete
* @param array $template
[1403] Fix | Delete
*
[1404] Fix | Delete
* @return array
[1405] Fix | Delete
*/
[1406] Fix | Delete
function et_theme_builder_sanitize_template( $template ) {
[1407] Fix | Delete
$_ = et_();
[1408] Fix | Delete
$autogenerated_title = $_->array_get( $template, 'autogenerated_title', '0' );
[1409] Fix | Delete
$default = $_->array_get( $template, 'default', '0' );
[1410] Fix | Delete
$enabled = $_->array_get( $template, 'enabled', '0' );
[1411] Fix | Delete
$use_on = $_->array_get( $template, 'use_on', array() );
[1412] Fix | Delete
$exclude_from = $_->array_get( $template, 'exclude_from', array() );
[1413] Fix | Delete
$header_enabled = $_->array_get( $template, 'layouts.header.enabled', '1' );
[1414] Fix | Delete
$body_enabled = $_->array_get( $template, 'layouts.body.enabled', '1' );
[1415] Fix | Delete
$footer_enabled = $_->array_get( $template, 'layouts.footer.enabled', '1' );
[1416] Fix | Delete
[1417] Fix | Delete
$sanitized = array(
[1418] Fix | Delete
'title' => sanitize_text_field( $_->array_get( $template, 'title', '' ) ),
[1419] Fix | Delete
'autogenerated_title' => true === $autogenerated_title || '1' === $autogenerated_title,
[1420] Fix | Delete
'default' => true === $default || '1' === $default,
[1421] Fix | Delete
'enabled' => true === $enabled || '1' === $enabled,
[1422] Fix | Delete
'use_on' => array_map( 'sanitize_text_field', $use_on ),
[1423] Fix | Delete
'exclude_from' => array_map( 'sanitize_text_field', $exclude_from ),
[1424] Fix | Delete
'layouts' => array(
[1425] Fix | Delete
'header' => array(
[1426] Fix | Delete
'id' => (int) $_->array_get( $template, 'layouts.header.id', '0' ),
[1427] Fix | Delete
'enabled' => true === $header_enabled || '1' === $header_enabled,
[1428] Fix | Delete
),
[1429] Fix | Delete
'body' => array(
[1430] Fix | Delete
'id' => (int) $_->array_get( $template, 'layouts.body.id', '0' ),
[1431] Fix | Delete
'enabled' => true === $body_enabled || '1' === $body_enabled,
[1432] Fix | Delete
),
[1433] Fix | Delete
'footer' => array(
[1434] Fix | Delete
'id' => (int) $_->array_get( $template, 'layouts.footer.id', '0' ),
[1435] Fix | Delete
'enabled' => true === $footer_enabled || '1' === $footer_enabled,
[1436] Fix | Delete
),
[1437] Fix | Delete
),
[1438] Fix | Delete
);
[1439] Fix | Delete
[1440] Fix | Delete
return $sanitized;
[1441] Fix | Delete
}
[1442] Fix | Delete
[1443] Fix | Delete
/**
[1444] Fix | Delete
* Insert a Theme Builder layout post.
[1445] Fix | Delete
*
[1446] Fix | Delete
* @since 4.0
[1447] Fix | Delete
*
[1448] Fix | Delete
* @param array $options
[1449] Fix | Delete
*
[1450] Fix | Delete
* @return integer|WP_Error
[1451] Fix | Delete
*/
[1452] Fix | Delete
function et_theme_builder_insert_layout( $options ) {
[1453] Fix | Delete
$post_id = wp_insert_post(
[1454] Fix | Delete
array_merge( array(
[1455] Fix | Delete
'post_status' => 'publish',
[1456] Fix | Delete
'post_title' => 'Theme Builder Layout',
[1457] Fix | Delete
), $options ),
[1458] Fix | Delete
true );
[1459] Fix | Delete
[1460] Fix | Delete
if ( is_wp_error( $post_id ) ) {
[1461] Fix | Delete
return $post_id;
[1462] Fix | Delete
}
[1463] Fix | Delete
[1464] Fix | Delete
wp_set_object_terms( $post_id, 'layout', 'layout_type', true );
[1465] Fix | Delete
et_builder_enable_for_post( $post_id );
[1466] Fix | Delete
[1467] Fix | Delete
return $post_id;
[1468] Fix | Delete
}
[1469] Fix | Delete
[1470] Fix | Delete
/**
[1471] Fix | Delete
* Overrides cache post_type so that TB custom post types and 'page' share the same files.
[1472] Fix | Delete
*
[1473] Fix | Delete
* @since 4.0
[1474] Fix | Delete
*
[1475] Fix | Delete
* @param string $post_type
[1476] Fix | Delete
*
[1477] Fix | Delete
* @return string.
[1478] Fix | Delete
*/
[1479] Fix | Delete
function et_theme_builder_cache_post_type( $post_type ) {
[1480] Fix | Delete
if ( et_theme_builder_is_layout_post_type( $post_type ) ) {
[1481] Fix | Delete
// Use a generic name for all Theme Builder post type modules
[1482] Fix | Delete
// as they are identical for most practical reasons.
[1483] Fix | Delete
$post_type = 'page';
[1484] Fix | Delete
}
[1485] Fix | Delete
[1486] Fix | Delete
return $post_type;
[1487] Fix | Delete
}
[1488] Fix | Delete
add_filter( 'et_builder_cache_post_type', 'et_theme_builder_cache_post_type' );
[1489] Fix | Delete
[1490] Fix | Delete
/**
[1491] Fix | Delete
* Decorate a page resource slug based on the current request and TB.
[1492] Fix | Delete
*
[1493] Fix | Delete
* @since 4.0.7
[1494] Fix | Delete
*
[1495] Fix | Delete
* @param integer|string $post_id
[1496] Fix | Delete
* @param string $resource_slug
[1497] Fix | Delete
*
[1498] Fix | Delete
* @return string
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function