Php WordPress-发布更新后自动更新永久链接
我正在使用WooCommerce添加产品页面计算产品的自定义标题。在用户发布产品信息后,通过save_post过滤器钩子生成并保存标题Php WordPress-发布更新后自动更新永久链接,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在使用WooCommerce添加产品页面计算产品的自定义标题。在用户发布产品信息后,通过save_post过滤器钩子生成并保存标题 add_filter('save_post', 'modify_post_title', '99', 1); function modify_post_title($post_id) { // some logic to form a new $title // ... if (!empty($title)) { //
add_filter('save_post', 'modify_post_title', '99', 1);
function modify_post_title($post_id)
{
// some logic to form a new $title
// ...
if (!empty($title)) {
// update the title in database
$wpdb->update($wpdb->posts, array('post_title' => $title), array('ID' => $post_id));
// UPDATE PERMALINK
}
}
我需要知道更新标题后使用什么函数重新生成永久链接
提前谢谢我想你可以使用窗口.history.pushState来修改浏览器历史记录 我想这些可能对你有帮助
window.history.pushState("object or string", "Title", surl[0]);
请您在
functions.php
中添加上述代码好吗?我应该何时调用此javascript?有任何PHP代码可以做到这一点吗?它在现有帖子中运行得非常好。“但是对于新的职位,它不起作用了。”哈米德我们从我们这边检查过,它工作得很好。你能重新检查一下吗?你是说当你创建新产品并保存它的时候吗?那么您必须更改产品名称,而您的产品permalink没有更改?我是说,当我创建一个新产品时,我只是给出一个虚拟标题,然后填充其他属性。然后,我单击publish,上面的代码生成了一个新标题,permalink仍然没有更新。然后,我点击更新按钮,在这里你的代码工作,永久链接被更改。在你的代码的帮助下,它成功地为我工作了。我刚刚更新了过滤器中的以下行:$wpdb->update($wpdb->posts,array('post_title'=>$title,'post_name'=>sanitize_title($title)),array('ID'=>$post_ID));即使是在新的岗位上,它也做得很好。再次感谢。
add_filter( 'wp_insert_post_data', 'custom_slug_change', 50, 2 );
function custom_slug_change( $data, $postarr ) {
//Check for the post statuses you want to avoid
if ( !in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = sanitize_title( $data['post_title'] );
}
return $data;
}