用于永久链接更新后的挂钩

时间:2014-01-07 作者:Pelang

我想知道修改帖子的永久链接/url时应该使用什么钩子。我的目标是得到旧的permalink和新的permalink,以便我可以将其用于我的插件。谢谢

[编辑]只是想澄清一下问题。我想在一个场景中获取旧的和新的url,例如,当用户在管理区域中选择一篇文章,并将当前的永久链接/url(/helloworld)编辑为所选文章的新永久链接/url(/helloworld\\u new)。我想获得正在编辑的帖子的完整url。

2 个回复
最合适的回答,由SO网友:Shazzad 整理而成

你需要准确地使用wp_insert_post_data. 这包含在WordPress完成所有验证/清理后将存储到数据库中的post数据数组。

add_filter(\'wp_insert_post_data\', \'wpse_wp_insert_post_data\', 10, 2);
function wpse_wp_insert_post_data($data, $post_attr)
{
    // you get the post_name using $data[\'post_name\'];

    // post id will not be present for the first insert
    // but you can check $post_attr[\'ID\'] to be sure if an ID has been passed.
    // note: $data won\'t contain post id ever, only the $post_attr will have it

    // if you want to compare the name, you could use -
    if( isset($post_attr[\'post_name\']) 
        && !empty($post_attr[\'post_name\']) 
        && $post_attr[\'post_name\'] != $data[\'post_name\'] )
    {
        // So here you can guess post name has been changed
        // note: $post_attr[\'post_name\'] might come undefined or empty sometime.
        // and $data[\'post_name\'] could also comes up empty, but it will be always defined
    }

    // you do not need to modify anything, so you should return it as it is
    return $data;
}
希望有帮助。

SO网友:bueltge

行动是update_option_permalink_structure.

下面的示例使用此挂钩。

add_action( \'update_option_permalink_structure\' , \'my_custom_function\', 10, 2 );
function my_custom_function( $old_value, $new_value ) {

    // test
    var_dump( $old_value );
}
本文中的钩子始终是update_option_{$option} [或update_option_{$option_name} (自WordPress 3.6以来已弃用)]。

同样相关的是pre_update_option_{$option} 和多站点版本的挂钩update_site_option_{$option}pre_update_site_option_{$option}.

结束

相关推荐

缺少WordPress Apply_Filters()参数

我正在定制Woocommerce Wordpress网站。在Woocommerce产品类别中(class-wc-product.php) 这个get_price 函数应用筛选器,如下所示:function get_price() { return apply_filters(\'woocommerce_get_price\', $this->price, $this); } 在我的功能中。php我想添加一个过滤器,如下所示:add_filter(\'woocomme