Крюк для обновления постоянной ссылки

Я хотел бы знать, какой крючок следует использовать, когда изменяется постоянная ссылка / URL-адрес сообщения. Моя цель – получить старую постоянную ссылку и новую ссылку, чтобы я мог использовать ее для своего плагина. Благодарю.

[EDIT] Просто хочу уточнить вопрос. Я хотел бы получить старый и новый url в сценарии, например, когда пользователь выбирает один свой пост в области администратора и редактирует текущую ссылку permalink / url (/ helloworld) в новую константу / url (/ helloworld_new) выбранный пост. Я хотел бы получить полный URL-адрес редактируемого сообщения.

Solutions Collecting From Web of "Крюк для обновления постоянной ссылки"

Вам нужно точно использовать wp_insert_post_data . Это содержит массив почтовых данных, которые будут храниться в базе данных после того, как WordPress выполнит всю проверку / санитацию.

 add_filter('wp_insert_post_data', 'wpse_wp_insert_post_data', 10, 2); function wpse_wp_insert_post_data($data, $post_attr) { // you get the post_name using $data['post_name']; // post id will not be present for the first insert // but you can check $post_attr['ID'] to be sure if an ID has been passed. // note: $data won't contain post id ever, only the $post_attr will have it // if you want to compare the name, you could use - if( isset($post_attr['post_name']) && !empty($post_attr['post_name']) && $post_attr['post_name'] != $data['post_name'] ) { // So here you can guess post name has been changed // note: $post_attr['post_name'] might come undefined or empty sometime. // and $data['post_name'] could also comes up empty, but it will be always defined } // you do not need to modify anything, so you should return it as it is return $data; } 

Надеюсь, поможет.

Действие – update_option_permalink_structure .

Следующий пример работает с этим крюком.

 add_action( 'update_option_permalink_structure' , 'my_custom_function', 10, 2 ); function my_custom_function( $old_value, $new_value ) { // test var_dump( $old_value ); } 

update_option_{$option} в этом контексте всегда является update_option_{$option} [или update_option_{$option_name} (устаревший с WordPress 3.6)].

Также связано pre_update_option_{$option} и крючок для update_site_option_{$option} версии update_site_option_{$option} и pre_update_site_option_{$option} .