WordPress Создать дубликаты сообщений при сохранении / обновлении

Я знаю, что некоторым это может показаться странным, но я хотел бы продублировать пост о создании.

Когда создается сообщение, я хотел бы продублировать его, добавив новые данные в заголовок, а также обновив мета-поля и изменив таксономию, в которой он находится.

Вот что я сделал до сих пор:

add_action('wp_insert_post', 'my_add_custom_fields');
function my_add_custom_fields($post_id)
{
if ( $_POST['post_type'] == 'products' ) {

$my_post = array(
'post_title'    => get_the_title(),
'post_content'  => '',
'post_status'   => 'publish',
'post_type'     => 'products',
);

$id = wp_insert_post($my_post);
update_post_meta($id,'keywords', get_the_title());
wp_set_object_terms($id, 'New Term Here', 'platform');

}
return true;
}

Проблема, которую я имею, состоит в том, что это создает бесконечный цикл, создавая новый пост тысячи раз и не остановится, пока я не перезапущу apache.

Это можно обойти?

-1

Решение

Вам нужно какое-то управление для этого, чтобы остановить его зацикливание. например установить глобальное значение для подсчета

    $GLOBALS['control']=0;

add_action('wp_insert_post', 'my_add_custom_fields');
function my_add_custom_fields($post_id)
{
if ( $_POST['post_type'] == 'products' ) {

//if control is on third iteration dont proceed

if($GLOBALS['control']===2)
return;



//add control here!
$GLOBALS['control']++;

$my_post = array(
'post_title'    => get_the_title(),
'post_content'  => '',
'post_status'   => 'publish',
'post_type'     => 'products',
);

$id = wp_insert_post($my_post);
update_post_meta($id,'keywords', get_the_title());
wp_set_object_terms($id, 'New Term Here', 'platform');

}
return true;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]