- availability:
-
WPML Version: 3.2
- description:
-
Builds or updates duplicate posts from a “master” post. This action hook is reserved for admin backend calls.
- type:
- action
- category:
- Inserting Content
- parameters:
-
do_action( 'wpml_admin_make_post_duplicates', int $master_post_id )
- $master_post_id
- (int) (Required) The ID of the post to duplicate from. It can be that of a post, page or custom post. The “master post” doesn’t need to be in the default language.
- hook example usage:
-
Example
12// this will create duplicates for the "Hello World!" post
do_action(
'wpml_admin_make_post_duplicates'
, 1 );
In the example below, we create duplicates for a post or page or custom post when we click on “publish” from the “edit-post” admin screen.
A more advanced example
1234567891011121314151617181920212223242526272829303132333435add_action(
'wp_insert_post'
,
'my_duplicate_on_publish'
);
function
my_duplicate_on_publish(
$post_id
) {
global
$post
;
// don't save for autosave
if
(
is_null
(
$post
))
{
return
$post_id
;
}
if
( defined(
'DOING_AUTOSAVE'
) && DOING_AUTOSAVE ) {
return
$post_id
;
}
// dont save for revisions
if
( isset(
$post
->post_type ) &&
$post
->post_type ==
'revision'
) {
return
$post_id
;
}
// we need this to avoid recursion see add_action at the end
remove_action(
'wp_insert_post'
,
'my_duplicate_on_publish'
);
// make duplicates if the post being saved:
// #1. is not a duplicate of another or
// #2. does not already have translations
$is_translated
= apply_filters(
'wpml_element_has_translations'
,
''
,
$post_id
,
$post
->post_type );
if
( !
$is_translated
) {
do_action(
'wpml_admin_make_post_duplicates'
,
$post_id
);
}
// must hook again - see remove_action further up
add_action(
'wp_insert_post'
,
'my_duplicate_on_publish'
);
}