我知道如何注册自定义帖子类型,自定义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
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\' );