在 WordPress 中创建 post 时的动态永久链接

Dynamic permalinks when creating a post in WordPress

我有一个名为 houses 的自定义 post 类型。在我的自定义 post 类型中,我有几个使用 ACF 创建的自定义字段。

我需要做的是在创建新的 post 时更改固定链接。

我想使用 codetitle 字段来自定义永久链接:

//code + post title
4563312-house-example-1

我正在开发一个控制一切的插件。

有没有办法中间创建 post 以更新其永久链接?

谢谢。

经过一些研究,我找到了与 wp_insert_post_data 有关的答案。

使用wp_insert_post_data,我无法获取自定义字段值,为此,我不得不使用另一个操作,save_post .

function rci_custom_permalink($post_id) {
  $post = get_post($post_id);
  if($post->post_type !== 'houses') return;

  $code = get_field('code', $post_id);
  $post_name = sanitize_title($post->post_title);
  $permalink = $code . '-' . $post_name;

  // remove the action to not enter in a loop
  remove_action('save_post', 'rci_custom_permalink');

  // perform the update
  wp_update_post(array('ID' => $post_id, 'post_name' => $permalink));

  // add the action again
  add_action('save_post', 'rci_custom_permalink');
} 

add_action('save_post', 'rci_custom_permalink');

PS: 由于这些字段都是必填项,所以我不需要检查它们是否为空。

save_post 操作参考: Plugin API/Action Reference/save post