在stackoverflow.com上搜索了几个小时后,我找不到任何答案。
有人可以帮助我朝正确的方向前进吗?
所以,我想要实现的是以下......
我希望通过
为单个帖子自动生成postname和永久链接$post_ID, '_wp_attachment_image_alt', $attachment_title
从image_alt或attachment_title中提取数据并设置为postname和permalink ...
add_action('save_post', 'set_slug');
function set_slug($attachment_id){
$new_slug = wp_get_attachment_metadata( $attachment_title,'_wp_attachment_image_alt', true);
$post_args = array(
'ID' => $attachment_id,
'post_name' => $new_slug,
);
wp_update_post($post_args);
}
我在我的functions.php中尝试使用serval代码来改变单个帖子永久链接,但到目前为止还没有成功。
答案 0 :(得分:0)
wp_update_post()在成功时返回一个int,在失败时返回WP_Error。你调用wp_update_post()的返回值是多少?
但是,我怀疑这可能导致无限递归,因为wp_update_post()调用wp_insert_post()执行do_action('save_post',...)。在这将导致超出PHP错误时间限制 - 并且对wp_update_post()的调用永远不会返回。
您可能最好使用过滤器'wp_insert_attachment_data',该过滤器使用$ data和$ postarr参数调用,并修改$ data中的'post_name'。