自定义帖子类型固定链接

时间:2014-08-30 作者:Chez Ballou

我知道如何注册自定义帖子类型,自定义slug,并决定是否添加“front”(WP permalink设置)。

我想做的是通过添加

?username
在自定义帖子类型url的末尾。现在我知道可以在WP permalink设置中添加已清理的作者名称,但我不想这样做-我正在寻找用于登录的用户名。

例如:我用自定义slug“homes”创建了一个名为“Home”(单数)的自定义post类型url应为:

www.mydomain。com/homes/postname

我希望url改为如下所示:

www.mydomain。com/homes/postname?用户名

我不知道如何通过修改注册内容类型的常用方法来实现:

add_action( \'init\', \'create_posttype\' );
function create_posttype() {
  register_post_type( \'home\',
    array(
      \'labels\' => array(
        \'name\' => __( \'Homes\' ),
        \'singular_name\' => __( \'Home\' )
      ),
      \'public\' => true,
      \'has_archive\' => true,
      \'rewrite\' => array(\'slug\' => \'homes\'),
    )
  );
}
我做了一点尝试,最终使我的网站完全无法访问,所以我决定寻求一些帮助:P

2 个回复
SO网友:dmanexe

馆长/管理员注意:我想留下评论,但我没有足够的声誉。我知道我不是在正式地提供答案,而是试图帮助提出问题的人。

您是否使用任何会员插件?你能给我们提供更多关于网站总体地图和功能的信息吗?我们看到了一个非常狭窄的领域,需要评估一个更大的问题。

您使用自定义帖子类型的方法是正确的,但我认为有更好的方法来应对这种情况。

我将从您提供的代码示例中假设您对PHP/Wordpress codex有很好的理解,以最好地帮助解释我的意思,这将是最好的想法。

生成面向公众的用户配置文件页面的更实用的方法是控制主题功能,例如/profile/<foo> 查找相关用户信息。从那里,您可以将每个配置文件页面的权限传递给用户,用户需要通过Wordpress仪表板登录并编辑其信息。或者,用户从另一个提供公共页面的前端页面填写个人资料信息。

如果您对编写自定义帖子类型感到困惑,您可能需要安装一个交钥匙解决方案。在不提及任何品牌名称的情况下,有许多现有(和免费)会员插件为用户提供了一个公共配置文件+帐户管理区域。

SO网友:cybmeta

要向post permalink添加查询字符串,应使用post_link 过滤器与add_query_arg 作用

add_filter( \'post_link\', \'cyb_append_query_string\', 10, 3 );
function cyb_append_query_string( $url, $post, $leavename ) {
    //Change for the post type you want
    if ( $post->post_type == \'home\' ) {
        $url = add_query_arg( \'username\', \'username_value\', $url );
    }
    return $url;
}
如果要在wp\\U查询中使用该查询参数,还应运行query_vars 过滤器:

add_filter( \'query_vars\', \'cyb_query_vars\' , 10, 1 );
function cyb_query_vars( $qvars ) {
    $qvars[] = \'username\';
    return $qvars;
 }
现在您可以获得username 按如下方式查询变量:

 $username = get_query_var( \'username\' );
 //Or, if working with a WP_Query object
 $username = $wp_query->get( \'username\' );

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-