Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress-发布更新后自动更新永久链接_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WordPress-发布更新后自动更新永久链接

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)) { //

我正在使用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)) {
        // 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;
}