我有一个函数,当你发布一条新闻时,会给它添加一个相关的ID号,这就是它:
function update_post_id_contenido($post_id) {
$post_type = get_post_type($post_id);
if ($post_type === 'post') {
$id_contenido = get_field('id_contenido', $post_id);
if (empty($id_contenido)) {
$last_id_contenido = get_posts(array(
'post_type' => 'post',
'meta_key' => 'id_contenido',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'numberposts' => 1,
));
$last_id_contenido_value = get_field('id_contenido', $last_id_contenido[0]->ID);
if (empty($last_id_contenido_value)) {
$new_id_contenido = 1000;
} else {
$new_id_contenido = $last_id_contenido_value + 1;
}
update_field('id_contenido', $new_id_contenido, $post_id);
}
}
}
add_action('acf/save_post', 'update_post_id_contenido', 20);
字符串
我的意图是,它保存了slug,以便在结尾时它的类型为domain.com/$id_contenido/$posttitle
我尝试了这个函数,但它返回一个内存限制错误。
function update_post_slug($post_id, $post, $update) {
if ($post->post_type == 'post' && $post->post_status == 'publish') {
$id_contenido = get_post_meta($post_id, 'id_contenido', true);
$post_title = sanitize_title($post->post_title);
$new_slug = $id_contenido . '/' . $post_title;
wp_update_post([
'ID' => $post_id,
'post_name' => $new_slug,
]);
}
}
add_action('save_post', 'update_post_slug', 10, 3);
型
1条答案
按热度按时间35g0bw711#
您收到一个内存限制错误,因为您的代码触发了一个无限循环。
在
save_post
上调用函数update_post_slug
,该函数调用函数wp_update_post
,该函数触发动作save_post
。一个简单的解决方法是让
update_post_slug
注销自己,以确保函数在生命周期内只调用一次:字符串