16ответ(ов) в теме
Ну я попробовал save_post
add_action( 'save_post', 'fun'); function fun() { $F = get_user_meta( get_current_user_id(), 'testpole', true ); $F++; update_user_meta(get_current_user_id(), 'testpole', $F); }
Но я так и не понял как сделать так что бы он срабатывал только когда создается новый пост
add_action( 'save_post', 'fun' "", "", false); function fun($post_ID, $post, $update) { $F = get_user_meta( get_current_user_id(), 'testpole', true ); $F++; update_user_meta(get_current_user_id(), 'testpole', $F); }
Ну я более менее знаю как их использовать
Просто я не понимаю зачем нужен здесь wp_update_post
Ведь единственное что он может так это изменить сам пост который создается.
WP_Post Object ( [ID] => 1 [post_author] => 1 [post_date] => 2010-03-26 09:27:40 [post_date_gmt] => 2010-03-26 05:27:40 [post_content] => Контент записи... [post_title] => Название записи [post_excerpt] => [post_status] => publish [comment_status] => open [ping_status] => open [post_password] => [post_name] => post_name [to_ping] => [pinged] => http://wp-kama.ru/dopolnitelnyie-knopki [post_modified] => 2014-02-10 10:31:17 [post_modified_gmt] => 2014-02-10 06:31:17 [post_content_filtered] => [post_parent] => 0 [guid] => http://wp-kama.ru/post_name [menu_order] => 0 [post_type] => post [post_mime_type] => [comment_count] => 41 [filter] => raw )
Я не понимаю как изменение обновления записи и действие срабатывающее только когда пост создается связаны между собой.
Можете мне пожалуйста это объяснить.
Можно использовать хук save_post, но чтобы реагировать только на создание публикации, то проверяйте третий аргумент $update, он равен false, только в момент создания поста.
Вот именно это мне и непонятно.
$update идет третим аргументом что вызывает трудности поскольку
$post_ID и $post должны остаться как обычно
Я перепробовал несколько способов но так и не понял как оставить $post_ID и $post по умолчанию и проверить только $update
add_action( 'save_post', 'fun', $post->ID, $post, false); function fun($post_id, $post, $update) { if ( !$update ) { $F = get_user_meta( get_current_user_id(), 'test', true ); $F++; update_user_meta(get_current_user_id(), 'test', $F); } }
ведь функция постоянно ожидает 3 аргумента а не один.
В коде оказалась опечатка и он выводил мне не то поле которое мне надо
Я все исправил
add_action( 'save_post', 'fun', 10, 3); function fun($post_id, $post, $update) { if (!$update ) { $F = get_user_meta( get_current_user_id(), 'test', true ); $F++; update_user_meta(get_current_user_id(), 'test', $F); }}
Тема закрыта. Публикация новых сообщений запрещена.