- availability:
-
WPML Version: 3.2
- description:
-
WPML applies this hook filter on custom field values, post content, post title and post excerpt when a WordPress post type is being duplicated and before the data is saved into the database. The data are in this way made available to external themes and plugins for filtering.
- type:
- filter
- category:
- Miscellaneous
- parameters:
-
apply_filters( 'wpml_duplicate_generic_string', string $value_to_filter, string $target_language, array $meta_data )
- $value_to_filter
- (string) (Required) The data string to filter
- $target_language
- (string) (Optional) The target language code
- $meta_data
- (array) (Optional) See details below:
- context(string) The data context. Set to “custom_field” if the value belongs to a custom field and “post” for all other cases (post title, content or excerpt)
- attribute(string) Set to: “value” for custom fields, “content” for post content, “title” for post title, “excerpt” for post excerpt
- key(string) The
$post_meta->meta_key
if the filter is being applied to custom field values. Otherwise the id of the original post that acts as master for duplication - $is_serialized(bool) Passed only for custom field data.
true|false
Whether the data is serialized. This allows to unserialize the value if needed. - post_id(int) Passed only for custom field data. The id of the post being duplicated
- master_post_id(int) Passed only for custom field data. The id of the original post that acts as master for duplication
- hook example usage:
-
A basic example
123456789101112131415161718192021222324252627282930313233function
my_override_post_duplication(
$value_to_filter
,
$target_language
,
$meta_data
) {
$context
=
$meta_data
[
'context'
];
if
(
$value_to_filter
!==
''
&&
$context
) {
$prefix
=
''
;
$attribute
=
$meta_data
[
'attribute'
];
if
(
$context
==
'post'
) {
switch
(
$attribute
) {
case
'content'
:
$prefix
=
'<h3>'
.
$target_language
.
'</h3>'
;
break
;
case
'excerpt'
:
$prefix
=
$target_language
.
"nn"
;
break
;
default
:
$prefix
=
'['
.
$target_language
.
'] '
;
}
}
elseif
(
$context
==
'custom_field'
&&
$attribute
==
'value'
) {
$is_serialized
=
$meta_data
[
'is_serialized'
];
if
( !
$is_serialized
&&
is_string
(
$value_to_filter
) && !
is_numeric
(
$value_to_filter
) ) {
$prefix
=
'['
.
$target_language
.
'] '
;
}
}
if
(
$prefix
) {
$value_to_filter
=
$prefix
.
$value_to_filter
;
}
}
return
$value_to_filter
;
}
add_filter(
'wpml_duplicate_generic_string'
,
'my_override_post_duplication'
, 10, 3 );