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/clone/wp-conte.../themes/Divi/includes/builder/feature
File: dynamic-content.php
}
[500] Fix | Delete
[501] Fix | Delete
return $list;
[502] Fix | Delete
}
[503] Fix | Delete
[504] Fix | Delete
/**
[505] Fix | Delete
* Get a user-friendly custom field label for the given meta key.
[506] Fix | Delete
*
[507] Fix | Delete
* @since 4.4.4
[508] Fix | Delete
*
[509] Fix | Delete
* @param string $key
[510] Fix | Delete
*
[511] Fix | Delete
* @return string
[512] Fix | Delete
*/
[513] Fix | Delete
function et_builder_get_dynamic_content_custom_field_label( $key ) {
[514] Fix | Delete
$label = str_replace( array( '_', '-' ), ' ', $key );
[515] Fix | Delete
$label = ucwords( $label );
[516] Fix | Delete
$label = trim( $label );
[517] Fix | Delete
return $label;
[518] Fix | Delete
}
[519] Fix | Delete
[520] Fix | Delete
/**
[521] Fix | Delete
* Get all dynamic content fields in a given string.
[522] Fix | Delete
*
[523] Fix | Delete
* @since 4.4.4
[524] Fix | Delete
*
[525] Fix | Delete
* @param string $content
[526] Fix | Delete
*
[527] Fix | Delete
* @return array
[528] Fix | Delete
*/
[529] Fix | Delete
function et_builder_get_dynamic_contents( $content ) {
[530] Fix | Delete
$is_matched = preg_match_all( ET_THEME_BUILDER_DYNAMIC_CONTENT_REGEX, $content, $matches );
[531] Fix | Delete
[532] Fix | Delete
if ( ! $is_matched ) {
[533] Fix | Delete
return array();
[534] Fix | Delete
}
[535] Fix | Delete
[536] Fix | Delete
return $matches[0];
[537] Fix | Delete
}
[538] Fix | Delete
[539] Fix | Delete
/**
[540] Fix | Delete
* Get all meta keys used as dynamic content in the content of a post.
[541] Fix | Delete
*
[542] Fix | Delete
* @param integer $post_id
[543] Fix | Delete
*
[544] Fix | Delete
* @return array
[545] Fix | Delete
*/
[546] Fix | Delete
function et_builder_get_used_dynamic_content_meta_keys( $post_id ) {
[547] Fix | Delete
$transient = 'et_builder_dynamic_content_used_meta_keys_' . $post_id;
[548] Fix | Delete
$used_meta_keys = get_transient( $transient );
[549] Fix | Delete
[550] Fix | Delete
if ( false !== $used_meta_keys ) {
[551] Fix | Delete
return $used_meta_keys;
[552] Fix | Delete
}
[553] Fix | Delete
[554] Fix | Delete
// The most used meta keys will change from time to time so we will also retrieve the used meta keys in the layout
[555] Fix | Delete
// content to make sure that the previously selected meta keys always stay in the list even if they are not in the
[556] Fix | Delete
// most used meta keys list anymore.
[557] Fix | Delete
$layout_post = get_post( $post_id );
[558] Fix | Delete
$used_meta_keys = array();
[559] Fix | Delete
$dynamic_contents = et_builder_get_dynamic_contents( $layout_post->post_content );
[560] Fix | Delete
[561] Fix | Delete
foreach ( $dynamic_contents as $dynamic_content ) {
[562] Fix | Delete
$dynamic_content = et_builder_parse_dynamic_content( $dynamic_content );
[563] Fix | Delete
$key = $dynamic_content->get_content();
[564] Fix | Delete
[565] Fix | Delete
if ( et_()->starts_with( $key, 'custom_meta_' ) ) {
[566] Fix | Delete
$meta_key = substr( $key, strlen( 'custom_meta_' ) );
[567] Fix | Delete
$used_meta_keys[] = $meta_key;
[568] Fix | Delete
}
[569] Fix | Delete
}
[570] Fix | Delete
[571] Fix | Delete
set_transient( $transient, $used_meta_keys, 5 * MINUTE_IN_SECONDS );
[572] Fix | Delete
[573] Fix | Delete
return $used_meta_keys;
[574] Fix | Delete
}
[575] Fix | Delete
[576] Fix | Delete
/**
[577] Fix | Delete
* Get most used meta keys on public post types.
[578] Fix | Delete
*
[579] Fix | Delete
* @since 4.4.4
[580] Fix | Delete
*
[581] Fix | Delete
* @param integer $post_id
[582] Fix | Delete
*
[583] Fix | Delete
* @return string[]
[584] Fix | Delete
*
[585] Fix | Delete
*/
[586] Fix | Delete
function et_builder_get_most_used_post_meta_keys() {
[587] Fix | Delete
global $wpdb;
[588] Fix | Delete
[589] Fix | Delete
$most_used_meta_keys = get_transient( 'et_builder_most_used_meta_keys' );
[590] Fix | Delete
if ( false !== $most_used_meta_keys ) {
[591] Fix | Delete
return $most_used_meta_keys;
[592] Fix | Delete
}
[593] Fix | Delete
[594] Fix | Delete
$public_post_types = array_keys( et_builder_get_public_post_types() );
[595] Fix | Delete
$post_type_placeholders = implode( ',', array_fill( 0, count( $public_post_types ), '%s' ) );
[596] Fix | Delete
[597] Fix | Delete
$sql = $wpdb->prepare(
[598] Fix | Delete
"SELECT DISTINCT pm.meta_key FROM {$wpdb->postmeta} pm
[599] Fix | Delete
INNER JOIN {$wpdb->posts} p ON ( p.ID = pm.post_id AND p.post_type IN ({$post_type_placeholders}) )
[600] Fix | Delete
WHERE pm.meta_key NOT LIKE '\_%'
[601] Fix | Delete
GROUP BY pm.meta_key
[602] Fix | Delete
ORDER BY COUNT(pm.meta_key) DESC
[603] Fix | Delete
LIMIT 50",
[604] Fix | Delete
$public_post_types
[605] Fix | Delete
);
[606] Fix | Delete
[607] Fix | Delete
$most_used_meta_keys = $wpdb->get_col( $sql );
[608] Fix | Delete
[609] Fix | Delete
set_transient( 'et_builder_most_used_meta_keys', $most_used_meta_keys, 5 * MINUTE_IN_SECONDS );
[610] Fix | Delete
[611] Fix | Delete
return $most_used_meta_keys;
[612] Fix | Delete
}
[613] Fix | Delete
[614] Fix | Delete
/**
[615] Fix | Delete
* Get custom dynamic content fields.
[616] Fix | Delete
*
[617] Fix | Delete
* @since 3.17.2
[618] Fix | Delete
*
[619] Fix | Delete
* @param integer $post_id
[620] Fix | Delete
*
[621] Fix | Delete
* @return array[]
[622] Fix | Delete
*/
[623] Fix | Delete
function et_builder_get_custom_dynamic_content_fields( $post_id ) {
[624] Fix | Delete
$raw_custom_fields = get_post_meta( $post_id );
[625] Fix | Delete
$raw_custom_fields = is_array( $raw_custom_fields ) ? $raw_custom_fields : array();
[626] Fix | Delete
$custom_fields = array();
[627] Fix | Delete
[628] Fix | Delete
/**
[629] Fix | Delete
* Filter post meta accepted as custom field options in dynamic content.
[630] Fix | Delete
* Post meta prefixed with `_` is considered hidden from dynamic content options by default
[631] Fix | Delete
* due to its nature as "hidden meta keys". This filter allows third parties to
[632] Fix | Delete
* circumvent this limitation.
[633] Fix | Delete
*
[634] Fix | Delete
* @since 3.17.2
[635] Fix | Delete
*
[636] Fix | Delete
* @param string[] $meta_keys
[637] Fix | Delete
* @param integer $post_id
[638] Fix | Delete
*
[639] Fix | Delete
* @return string[]
[640] Fix | Delete
*/
[641] Fix | Delete
$display_hidden_meta_keys = apply_filters( 'et_builder_dynamic_content_display_hidden_meta_keys', array(), $post_id );
[642] Fix | Delete
[643] Fix | Delete
// Custom dynamic fields to be displayed on the TB.
[644] Fix | Delete
if ( et_theme_builder_is_layout_post_type( get_post_type( $post_id ) ) ) {
[645] Fix | Delete
$raw_custom_fields = array_merge(
[646] Fix | Delete
$raw_custom_fields,
[647] Fix | Delete
array_flip( et_builder_get_most_used_post_meta_keys() ),
[648] Fix | Delete
array_flip( et_builder_get_used_dynamic_content_meta_keys( $post_id ) )
[649] Fix | Delete
);
[650] Fix | Delete
}
[651] Fix | Delete
[652] Fix | Delete
foreach ( $raw_custom_fields as $key => $values ) {
[653] Fix | Delete
if ( substr( $key, 0, 1 ) === '_' && ! in_array( $key, $display_hidden_meta_keys ) ) {
[654] Fix | Delete
// Ignore hidden meta keys.
[655] Fix | Delete
continue;
[656] Fix | Delete
}
[657] Fix | Delete
[658] Fix | Delete
if ( substr( $key, 0, 3 ) === 'et_' ) {
[659] Fix | Delete
// Ignore ET meta keys as they are not suitable for dynamic content use.
[660] Fix | Delete
continue;
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
$label = et_builder_get_dynamic_content_custom_field_label( $key );
[664] Fix | Delete
[665] Fix | Delete
/**
[666] Fix | Delete
* Filter the display label for a custom field.
[667] Fix | Delete
*
[668] Fix | Delete
* @since 3.17.2
[669] Fix | Delete
*
[670] Fix | Delete
* @param string $label
[671] Fix | Delete
* @param string $meta_key
[672] Fix | Delete
*/
[673] Fix | Delete
$label = apply_filters( 'et_builder_dynamic_content_custom_field_label', $label, $key );
[674] Fix | Delete
[675] Fix | Delete
$field = array(
[676] Fix | Delete
'label' => $label,
[677] Fix | Delete
'type' => 'any',
[678] Fix | Delete
'fields' => array(
[679] Fix | Delete
'before' => array(
[680] Fix | Delete
'label' => et_builder_i18n( 'Before' ),
[681] Fix | Delete
'type' => 'text',
[682] Fix | Delete
'default' => '',
[683] Fix | Delete
'show_on' => 'text',
[684] Fix | Delete
),
[685] Fix | Delete
'after' => array(
[686] Fix | Delete
'label' => et_builder_i18n( 'After' ),
[687] Fix | Delete
'type' => 'text',
[688] Fix | Delete
'default' => '',
[689] Fix | Delete
'show_on' => 'text',
[690] Fix | Delete
),
[691] Fix | Delete
),
[692] Fix | Delete
'meta_key' => $key,
[693] Fix | Delete
'custom' => true,
[694] Fix | Delete
'group' => __( 'Custom Fields', 'et_builder' ),
[695] Fix | Delete
);
[696] Fix | Delete
[697] Fix | Delete
if ( current_user_can( 'unfiltered_html' ) ) {
[698] Fix | Delete
$field['fields']['enable_html'] = array(
[699] Fix | Delete
'label' => esc_html__( 'Enable raw HTML', 'et_builder' ),
[700] Fix | Delete
'type' => 'yes_no_button',
[701] Fix | Delete
'options' => array(
[702] Fix | Delete
'on' => et_builder_i18n( 'Yes' ),
[703] Fix | Delete
'off' => et_builder_i18n( 'No' ),
[704] Fix | Delete
),
[705] Fix | Delete
'default' => 'off',
[706] Fix | Delete
'show_on' => 'text',
[707] Fix | Delete
);
[708] Fix | Delete
}
[709] Fix | Delete
[710] Fix | Delete
$custom_fields[ "custom_meta_{$key}" ] = $field;
[711] Fix | Delete
}
[712] Fix | Delete
[713] Fix | Delete
/**
[714] Fix | Delete
* Filter available custom field options for dynamic content.
[715] Fix | Delete
*
[716] Fix | Delete
* @since 3.17.2
[717] Fix | Delete
*
[718] Fix | Delete
* @param array[] $custom_fields
[719] Fix | Delete
* @param int $post_id
[720] Fix | Delete
* @param mixed[] $raw_custom_fields
[721] Fix | Delete
*
[722] Fix | Delete
* @return array[]
[723] Fix | Delete
*/
[724] Fix | Delete
$custom_fields = apply_filters( 'et_builder_custom_dynamic_content_fields', $custom_fields, $post_id, $raw_custom_fields );
[725] Fix | Delete
[726] Fix | Delete
return $custom_fields;
[727] Fix | Delete
}
[728] Fix | Delete
[729] Fix | Delete
/**
[730] Fix | Delete
* Get all dynamic content fields.
[731] Fix | Delete
*
[732] Fix | Delete
* @since 3.17.2
[733] Fix | Delete
*
[734] Fix | Delete
* @param integer $post_id
[735] Fix | Delete
* @param string $context
[736] Fix | Delete
*
[737] Fix | Delete
* @return array[]
[738] Fix | Delete
*/
[739] Fix | Delete
function et_builder_get_dynamic_content_fields( $post_id, $context ) {
[740] Fix | Delete
global $__et_dynamic_content_fields_index_map;
[741] Fix | Delete
[742] Fix | Delete
$fields = et_builder_get_built_in_dynamic_content_fields( $post_id );
[743] Fix | Delete
$custom_fields = array();
[744] Fix | Delete
[745] Fix | Delete
if ( 'display' === $context || et_pb_is_allowed( 'read_dynamic_content_custom_fields' ) ) {
[746] Fix | Delete
$custom_fields = et_builder_get_custom_dynamic_content_fields( $post_id );
[747] Fix | Delete
}
[748] Fix | Delete
[749] Fix | Delete
$all = array_merge( $fields, $custom_fields );
[750] Fix | Delete
[751] Fix | Delete
foreach ( $all as $id => $field ) {
[752] Fix | Delete
$all[ $id ]['id'] = $id;
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
$__et_dynamic_content_fields_index_map = array_flip( array_keys( $all ) );
[756] Fix | Delete
uasort( $all, 'et_builder_sort_dynamic_content_fields' );
[757] Fix | Delete
$__et_dynamic_content_fields_index_map = array();
[758] Fix | Delete
[759] Fix | Delete
return $all;
[760] Fix | Delete
}
[761] Fix | Delete
[762] Fix | Delete
/**
[763] Fix | Delete
* Sort dynamic content fields.
[764] Fix | Delete
*
[765] Fix | Delete
* @since 4.0
[766] Fix | Delete
*
[767] Fix | Delete
* @param array $a
[768] Fix | Delete
* @param array $b
[769] Fix | Delete
*
[770] Fix | Delete
* @return integer
[771] Fix | Delete
*/
[772] Fix | Delete
function et_builder_sort_dynamic_content_fields( $a, $b ) {
[773] Fix | Delete
global $__et_dynamic_content_fields_index_map;
[774] Fix | Delete
[775] Fix | Delete
$top = array_flip( array(
[776] Fix | Delete
'Default',
[777] Fix | Delete
__( 'Custom Fields', 'et_builder' ),
[778] Fix | Delete
) );
[779] Fix | Delete
[780] Fix | Delete
$a_group = et_()->array_get( $a, 'group', 'Default' );
[781] Fix | Delete
$a_is_top = isset( $top[ $a_group ] );
[782] Fix | Delete
$b_group = et_()->array_get( $b, 'group', 'Default' );
[783] Fix | Delete
$b_is_top = isset( $top[ $b_group ] );
[784] Fix | Delete
[785] Fix | Delete
if ( $a_is_top && ! $b_is_top ) {
[786] Fix | Delete
return -1;
[787] Fix | Delete
}
[788] Fix | Delete
[789] Fix | Delete
if ( ! $a_is_top && $b_is_top ) {
[790] Fix | Delete
return 1;
[791] Fix | Delete
}
[792] Fix | Delete
[793] Fix | Delete
if ( $a_is_top && $b_is_top && $a_group !== $b_group ) {
[794] Fix | Delete
return $top[ $a_group ] - $top[ $b_group ];
[795] Fix | Delete
}
[796] Fix | Delete
[797] Fix | Delete
$a_index = $__et_dynamic_content_fields_index_map[ $a['id'] ];
[798] Fix | Delete
$b_index = $__et_dynamic_content_fields_index_map[ $b['id'] ];
[799] Fix | Delete
[800] Fix | Delete
return $a_index - $b_index;
[801] Fix | Delete
}
[802] Fix | Delete
[803] Fix | Delete
/**
[804] Fix | Delete
* Get default value for a dynamic content field's setting.
[805] Fix | Delete
*
[806] Fix | Delete
* @since 3.17.2
[807] Fix | Delete
*
[808] Fix | Delete
* @param integer $post_id
[809] Fix | Delete
* @param string $field
[810] Fix | Delete
* @param string $setting
[811] Fix | Delete
*
[812] Fix | Delete
* @return string
[813] Fix | Delete
*/
[814] Fix | Delete
function et_builder_get_dynamic_attribute_field_default( $post_id, $field, $setting ) {
[815] Fix | Delete
$_ = ET_Core_Data_Utils::instance();
[816] Fix | Delete
$fields = et_builder_get_dynamic_content_fields( $post_id, 'edit' );
[817] Fix | Delete
[818] Fix | Delete
return $_->array_get( $fields, "$field.fields.$setting.default", '' );
[819] Fix | Delete
}
[820] Fix | Delete
[821] Fix | Delete
/**
[822] Fix | Delete
* Resolve dynamic content to a simple value.
[823] Fix | Delete
*
[824] Fix | Delete
* @since 3.17.2
[825] Fix | Delete
*
[826] Fix | Delete
* @param string $name
[827] Fix | Delete
* @param array $settings
[828] Fix | Delete
* @param integer $post_id
[829] Fix | Delete
* @param string $context
[830] Fix | Delete
* @param array $overrides
[831] Fix | Delete
*
[832] Fix | Delete
* @return string
[833] Fix | Delete
*/
[834] Fix | Delete
function et_builder_resolve_dynamic_content( $name, $settings, $post_id, $context, $overrides = array(), $is_content = false ) {
[835] Fix | Delete
/**
[836] Fix | Delete
* Generic filter for content resolution based on a given field and post.
[837] Fix | Delete
*
[838] Fix | Delete
* @since 3.17.2
[839] Fix | Delete
*
[840] Fix | Delete
* @param string $content
[841] Fix | Delete
* @param string $name
[842] Fix | Delete
* @param array $settings
[843] Fix | Delete
* @param integer $post_id
[844] Fix | Delete
* @param string $context
[845] Fix | Delete
* @param array $overrides
[846] Fix | Delete
*
[847] Fix | Delete
* @return string
[848] Fix | Delete
*/
[849] Fix | Delete
$content = apply_filters( 'et_builder_resolve_dynamic_content', '', $name, $settings, $post_id, $context, $overrides );
[850] Fix | Delete
[851] Fix | Delete
/**
[852] Fix | Delete
* Field-specific filter for content resolution based on a given field and post.
[853] Fix | Delete
*
[854] Fix | Delete
* @since 3.17.2
[855] Fix | Delete
*
[856] Fix | Delete
* @param string $content
[857] Fix | Delete
* @param array $settings
[858] Fix | Delete
* @param integer $post_id
[859] Fix | Delete
* @param string $context
[860] Fix | Delete
* @param array $overrides
[861] Fix | Delete
*
[862] Fix | Delete
* @return string
[863] Fix | Delete
*/
[864] Fix | Delete
$content = apply_filters( "et_builder_resolve_dynamic_content_{$name}", $content, $settings, $post_id, $context, $overrides );
[865] Fix | Delete
[866] Fix | Delete
$content = et_maybe_enable_embed_shortcode( $content, $is_content );
[867] Fix | Delete
[868] Fix | Delete
return $is_content ? do_shortcode( $content ) : $content;
[869] Fix | Delete
}
[870] Fix | Delete
[871] Fix | Delete
/**
[872] Fix | Delete
* Wrap a dynamic content value with its before/after settings values.
[873] Fix | Delete
*
[874] Fix | Delete
* @since 3.17.2
[875] Fix | Delete
*
[876] Fix | Delete
* @param integer $post_id
[877] Fix | Delete
* @param string $name
[878] Fix | Delete
* @param string $value
[879] Fix | Delete
* @param array $settings
[880] Fix | Delete
*
[881] Fix | Delete
* @return string
[882] Fix | Delete
*/
[883] Fix | Delete
function et_builder_wrap_dynamic_content( $post_id, $name, $value, $settings ) {
[884] Fix | Delete
$_ = ET_Core_Data_Utils::instance();
[885] Fix | Delete
$def = 'et_builder_get_dynamic_attribute_field_default';
[886] Fix | Delete
$before = $_->array_get( $settings, 'before', $def( $post_id, $name, 'before' ) );
[887] Fix | Delete
$after = $_->array_get( $settings, 'after', $def( $post_id, $name, 'after' ) );
[888] Fix | Delete
$tb_post_id = ET_Builder_Element::get_theme_builder_layout_id();
[889] Fix | Delete
$cap_post_id = $tb_post_id ? $tb_post_id : $post_id;
[890] Fix | Delete
$user_id = get_post_field( 'post_author', $cap_post_id );
[891] Fix | Delete
[892] Fix | Delete
if ( ! user_can( $user_id, 'unfiltered_html' ) ) {
[893] Fix | Delete
$allowlist = array_merge(
[894] Fix | Delete
wp_kses_allowed_html( '' ),
[895] Fix | Delete
array(
[896] Fix | Delete
'h1' => array(),
[897] Fix | Delete
'h2' => array(),
[898] Fix | Delete
'h3' => array(),
[899] Fix | Delete
'h4' => array(),
[900] Fix | Delete
'h5' => array(),
[901] Fix | Delete
'h6' => array(),
[902] Fix | Delete
'ol' => array(),
[903] Fix | Delete
'ul' => array(),
[904] Fix | Delete
'li' => array(),
[905] Fix | Delete
'span' => array(),
[906] Fix | Delete
'p' => array(),
[907] Fix | Delete
)
[908] Fix | Delete
);
[909] Fix | Delete
[910] Fix | Delete
$before = wp_kses( $before, $allowlist );
[911] Fix | Delete
$after = wp_kses( $after, $allowlist );
[912] Fix | Delete
}
[913] Fix | Delete
[914] Fix | Delete
return $before . $value . $after;
[915] Fix | Delete
}
[916] Fix | Delete
[917] Fix | Delete
/**
[918] Fix | Delete
* Resolve built-in dynamic content fields.
[919] Fix | Delete
*
[920] Fix | Delete
* @since 3.17.2
[921] Fix | Delete
*
[922] Fix | Delete
* @param string $content
[923] Fix | Delete
* @param string $name
[924] Fix | Delete
* @param array $settings
[925] Fix | Delete
* @param string $context
[926] Fix | Delete
* @param integer $post_id
[927] Fix | Delete
*
[928] Fix | Delete
* @return string
[929] Fix | Delete
*/
[930] Fix | Delete
function et_builder_filter_resolve_default_dynamic_content( $content, $name, $settings, $post_id, $context, $overrides ) {
[931] Fix | Delete
global $shortname, $wp_query;
[932] Fix | Delete
[933] Fix | Delete
$_ = ET_Core_Data_Utils::instance();
[934] Fix | Delete
$def = 'et_builder_get_dynamic_attribute_field_default';
[935] Fix | Delete
$post = get_post( $post_id );
[936] Fix | Delete
$author = null;
[937] Fix | Delete
$wrapped = false;
[938] Fix | Delete
$is_woo = false;
[939] Fix | Delete
[940] Fix | Delete
if ( $post ) {
[941] Fix | Delete
$author = get_userdata( $post->post_author );
[942] Fix | Delete
} else if ( is_author() ) {
[943] Fix | Delete
$author = get_queried_object();
[944] Fix | Delete
}
[945] Fix | Delete
[946] Fix | Delete
switch ( $name ) {
[947] Fix | Delete
case 'product_title': // Intentional fallthrough.
[948] Fix | Delete
case 'post_title':
[949] Fix | Delete
if ( isset( $overrides[ $name ] ) ) {
[950] Fix | Delete
$content = $overrides[ $name ];
[951] Fix | Delete
} else {
[952] Fix | Delete
$content = et_builder_get_current_title( $post_id );
[953] Fix | Delete
}
[954] Fix | Delete
[955] Fix | Delete
$content = et_core_intentionally_unescaped( $content, 'cap_based_sanitized' );
[956] Fix | Delete
break;
[957] Fix | Delete
[958] Fix | Delete
case 'post_excerpt':
[959] Fix | Delete
if ( ! $post ) {
[960] Fix | Delete
break;
[961] Fix | Delete
}
[962] Fix | Delete
[963] Fix | Delete
$words = (int) $_->array_get( $settings, 'words', $def( $post_id, $name, 'words' ) );
[964] Fix | Delete
$read_more = $_->array_get( $settings, 'read_more_label', $def( $post_id, $name, 'read_more_label' ) );
[965] Fix | Delete
$content = isset( $overrides[ $name ] ) ? $overrides[ $name ] : get_the_excerpt( $post_id );
[966] Fix | Delete
[967] Fix | Delete
if ( $words > 0 ) {
[968] Fix | Delete
$content = wp_trim_words( $content, $words );
[969] Fix | Delete
}
[970] Fix | Delete
[971] Fix | Delete
if ( ! empty( $read_more ) ) {
[972] Fix | Delete
$content .= sprintf(
[973] Fix | Delete
' <a href="%1$s">%2$s</a>',
[974] Fix | Delete
esc_url( get_permalink( $post_id ) ),
[975] Fix | Delete
esc_html( $read_more )
[976] Fix | Delete
);
[977] Fix | Delete
}
[978] Fix | Delete
break;
[979] Fix | Delete
[980] Fix | Delete
case 'post_date':
[981] Fix | Delete
if ( ! $post ) {
[982] Fix | Delete
break;
[983] Fix | Delete
}
[984] Fix | Delete
[985] Fix | Delete
$format = $_->array_get( $settings, 'date_format', $def( $post_id, $name, 'date_format' ) );
[986] Fix | Delete
$custom_format = $_->array_get( $settings, 'custom_date_format', $def( $post_id, $name, 'custom_date_format' ) );
[987] Fix | Delete
[988] Fix | Delete
if ( 'default' === $format ) {
[989] Fix | Delete
$format = '';
[990] Fix | Delete
}
[991] Fix | Delete
[992] Fix | Delete
if ( 'custom' === $format ) {
[993] Fix | Delete
$format = $custom_format;
[994] Fix | Delete
}
[995] Fix | Delete
[996] Fix | Delete
$content = esc_html( get_the_date( $format, $post_id ) );
[997] Fix | Delete
break;
[998] Fix | Delete
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function