在 WordPress 中创建 post 时的动态永久链接
Dynamic permalinks when creating a post in WordPress
我有一个名为 houses 的自定义 post 类型。在我的自定义 post 类型中,我有几个使用 ACF 创建的自定义字段。
我需要做的是在创建新的 post 时更改固定链接。
我想使用 code 和 title 字段来自定义永久链接:
//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
我有一个名为 houses 的自定义 post 类型。在我的自定义 post 类型中,我有几个使用 ACF 创建的自定义字段。
我需要做的是在创建新的 post 时更改固定链接。
我想使用 code 和 title 字段来自定义永久链接:
//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