SergeyMakhnov
@SergeyMakhnov
PHP Developers

Почему этот код работает везде, кроме functions.php?

Здравствуйте. Подскажите пожалуйста почему этот код не работает в файле functions.php?
function get_random_worker( $new_status, $old_status, $post ) {
	if ($new_status == 'publish' && $old_status == 'draft' && get_post_type($post) == 'task') {
		global $wpdb;
    	$id_task = $post->ID;
    	$get_rand_worker = array("13", "14", "15");
    	$get_rand_worker_1 = array_rand($get_rand_worker, 1);
    	$rand_worker = $get_rand_worker[$get_rand_worker_1];
    	$wpdb->update( 'wp_postmeta',
			array( 'meta_value' => $rand_worker ),
			array( 'post_id' => $id_task, 'meta_key' => 'task_worker' )
		);
	}
}
add_action(  'transition_post_status',  'get_random_worker', 10, 3 );


При этом если его вставить в любую страницу то выполняется все замечательно. В этом же файле есть другой похожий код с хуком transition_post_status, только в нем смена статуса со своего кастомного на pending идет, и он отлично работает. Вообще не пойму почему так.

UPD. В общем код работает, но только если ставить статус Опубликовано со страницы, где список всех записей, вот на скрине
5e08ec3d1d377185086421.jpeg

Когда же ставить статус Опубликовано находясь внутри поста с помощью этого виджета
5e08ec691d04c798261961.jpeg
То ничего не работает. Кто знает почему так?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы