用于自定义开机自检类型的自定义插件

时间:2011-12-09 作者:honk31

嗨,谢谢你的阅读。

我想将帖子作者插入到我的自定义帖子类型slug中。

示例:http://example.com/charts/%author%/

有没有办法做到这一点?

以下是我的自定义帖子类型:

register_post_type(\'charts\', array(
  \'label\' => \'Charts\',
  \'description\' => \'\',
  \'public\' => true,
  \'show_ui\' => true,
  \'show_in_menu\' => true,
  \'capability_type\' => \'post\',
  \'hierarchical\' => false,
  \'rewrite\' => array(\'slug\' => \'/charts/author\'),
  \'query_var\' => true,
  \'supports\' => array(
    \'title\',
    \'editor\',
    \'trackbacks\',
    \'custom-fields\',
    \'comments\',
    \'author\',
  ),
  \'labels\' => array ( 
    \'name\' => \'Charts\',
    \'singular_name\' => \'Charts\',
    \'menu_name\' => \'Charts\',
    \'add_new\' => \'Add Charts\',
  ),
));
blessjnz公司

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

我想出了一个解决方案,决定与大家分享,因为和蔼可亲是件好事。这对我很有用,并且基于Jonathan Brinley. 如果有人有任何建议或更正,请随时告诉我。

首先,创建您的自定义帖子类型并按如下方式进行设置(这只是一个示例,请记住使其适合您自己的需要。slug设置很重要!)

register_post_type(\'charts\', array( 
  \'label\' => \'Whatever\',
  \'description\' => \'\',
  \'public\' => true,
  \'show_ui\' => true,
  \'show_in_menu\' => true,
  \'capability_type\' => \'post\',
  \'hierarchical\' => true,
  \'rewrite\' => array(\'slug\' => \'/whatever/%author%\'),
  \'query_var\' => true,
  \'supports\' => array(
    \'title\',
    \'editor\',
    \'trackbacks\',
    \'custom-fields\',
    \'comments\',
    \'author\'
  ) 
));
接下来,为过滤器设置一个函数(在functions.php):

function my_post_type_link_filter_function($post_link, $id = 0, $leavename = FALSE) {
  if (strpos(\'%author%\', $post_link) === FALSE) {
    $post = &get_post($id);
    $author = get_userdata($post->post_author);
    return str_replace(\'%author%\', $author->user_nicename, $post_link);
  }
}
然后激活过滤器(也在functions.php):

add_filter(\'post_type_link\', \'my_post_type_link_filter_function\', 1, 3);
正如我所说,我不确定这是最好的方法,但它对我来说很有效:)

结束

相关推荐

Remove custom post type slug

我正在使用自定义帖子类型和WordPress 3.2.1基于主题创建一个新网站。问题是,我的内容之前使用了%postname%permalinks,我所有的SEO都是基于此构建的。使用CPT添加段塞,如:http://mysite.com/slug-cpt/postname我在register\\u post\\u type函数中尝试了此规则,但不起作用:\'重写\'=>数组(\'slug\'=>false\',with\\u front\'=>false)我也读过这篇文章,但它对我不好