以下内容更多地被视为概念验证,而不是一个可复制/粘贴的解决方案<话虽如此,你应该这样做:
这个save_post
action 每当更新或创建帖子时运行。您可以使用add_action
.
因此,您的案例必须如下所示:
// initial hook
add_action( \'save_post\', \'wpse105926_save_post_callback\' );
function wpse105926_save_post_callback( $post_id ) {
// verify post is not a revision
if ( ! wp_is_post_revision( $post_id ) ) {
// unhook this function to prevent infinite looping
remove_action( \'save_post\', \'wpse105926_save_post_callback\' );
// update the post slug
wp_update_post( array(
\'ID\' => $post_id,
\'post_name\' => \'some-new-slug\' // do your thing here
));
// re-hook this function
add_action( \'save_post\', \'wpse105926_save_post_callback\' );
}
}
上面可能有点混乱的是,从它内部取消和重新调出函数。这是必需的,因为我们调用
wp_update_post
更新slug,从而触发
save_post
要再次运行的操作。
另外,如果希望WP根据帖子标题自动生成新的slug,只需传递一个空字符串:
wp_update_post( array(
\'ID\' => $post_id,
\'post_name\' => \'\' // slug will be generated by WP based on post title
));