在发布帖子之前生成自定义URL

时间:2012-12-24 作者:Luke

我已经实现了post_type_link 过滤我的自定义帖子,这是伟大的工作。然而,唯一的缺点是,最终URL似乎只在发布帖子时创建。

我想要的是在用户键入文章标题后创建自定义URL。我很难找到正确的钩子(过滤器/操作)来完成此操作。

有人知道在发布帖子之前挂接URL生成的最佳方法是什么吗?

2 个回复
SO网友:Anagio

我认为这篇文章需要先插入。这是一个示例函数,用于在插入后更新段塞。

// Update post slug
$my_post[\'ID\'] = $pid;
$my_post_name = \'post_name\' . "-" . $pid;
$my_post[\'post_name\'] .= $my_post_name;

// Update the post into the database
wp_update_post( $my_post )
它将post\\u名称与post ID结合起来创建URL。您可能还想看看http://codex.wordpress.org/Function_Reference/register_post_type 这涉及到设置缓动块的选项。我不确定您是想让您的成员能够设置自己的永久链接,还是想禁用永久链接并在后台生成永久链接。

SO网友:s_ha_dum

几乎没有测试过,所以要小心,但这可能会让你开始。

function lock_permalink_early($data,$postarr) {
  global $wpdb;
  if ($data[\'post_type\'] == \'post\' && !empty($postarr[\'ID\']) && empty($data[\'post_name\'])) {
    $data[\'post_name\'] = $data[\'post_title\'];
  }
  return $data;
}

add_filter(\'wp_insert_post_data\',\'lock_permalink_early\',99,2);
在发布帖子之前,WordPress不会设置永久链接。这样,如果你改变主意,你就可以不用太费劲地处理草稿标题。如果您有意设置post_name 这是permalink中特定于帖子的部分,但在第一次保存时,它似乎仍然存在。显然,你需要改变这一点post_type 以匹配您的自定义帖子类型。

结束

相关推荐