%20 是空间在URL/链接中的表示方式。它不存在于user_login 所有物浏览器正在添加它,因为您在href属性中添加了它。
您是如何创建此艺术家CPT的?如果你只是用艺术家的名字作为标题来创建它,那么slug不一定是用户名。它将被净化成一个有效的slug,就像帖子标题通常变成slug一样。如果您尝试使用用户登录创建链接,那么您天真地忽略了创建slug的过程,并期望它们是相同的。
如果要查找标题与用户名匹配的帖子,则应根据标题查询帖子,然后正确获取其永久链接:
function wppbc_current_user_link( $atts, $content ) {
if ( ! is_user_logged_in() ) {
return;
}
$current_user = wp_get_current_user();
$user_login = $current_user->user_login;
$post = get_page_by_title( $user_login, \'OBJECT\', \'artist\' ); // Substitute \'artist\' with your CPT\'s name.
if ( $post ) {
$url = esc_url( get_the_permalink( $post ) );
return "<a href=\'{$url}\'>Custom Page Link</a>";
}
}
不过,一个更具弹性的解决方案是在创建帖子时将对帖子ID的引用保存为用户元。这样你就不必担心帖子标题不匹配。