如何通过快捷码将当前用户链接到其作者页面

时间:2020-08-24 作者:gjwrites

我需要一个短代码将当前登录的用户链接到他们的作者页面,但我无法使该功能可行。基于另一个类似问题找到此代码here:

<?php
    if ( is_user_logged_in() ) {
        echo \'<a href="\' . home_url() . \'/author/\' . get_the_author_meta( \'user_login\', wp_get_current_user()->ID ) . \'"> My personal page</a>\';
    } else {
        echo \'<a href="\' . wp_login_url() . \'" title="Login">Login</a>\';
    }
?>
但它得到了;语法错误,意外的“href”(T_字符串),应为“;”"E;这里的错误是什么?

我还发现以下代码没有出现错误:

<?php 
global $current_user;
get_currentuserinfo();
echo get_author_posts_url($current_user->ID); 
?>
但如果我使用add shortcode函数将其放入一个短代码中,它不会显示任何内容。

这个问题在这里被问了很多次,我尝试过这些答案,但没有一个对我有用。我迷路了,我不是一个专业的程序员,所以任何帮助都可以。非常感谢。

编辑包括短代码:

/**
*Shortcode for user\'s author link
*/

function my_users_shortcode( $atts, $content) {
return \'<?php
    if ( is_user_logged_in() ) {
        echo \'<a href="\' . home_url() . \'/author/ \' . get_the_author_meta( \'user_login\', wp_get_current_user()->ID ) . \'"> My personal page</a>\';
    } else {
        echo \'<a href="\' . wp_login_url() . \'" title="Login">Login</a>\';
    }
?>\'
;}

add_shortcode( \'my_shortcode\', \'my_users_shortcode\' );

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

您正在尝试返回<?php 块为文本,您不需要这样做,但这样做是错误的-即使您正确返回它,它也不会被执行。您的特定语法错误是以下位:

function my_users_shortcode( $atts, $content) {
return \'<?php
    if ( is_user_logged_in() ) {
        echo \'<a href="\' . home_url()
你在哪里有\' 从你正在划界的字符串中的回声\'从这里突出显示的语法可以看出,它认为字符串以echo \' 而且<a href 现在又是PHP代码了。如果你真的想这么做,你就需要逃离\'用反斜杠使其成为字符串的一部分,而不是字符串的末端,即。

return \'<?php  echo \\\'a href="\\\' . home_url(); ?>\';
但您不必这样做:因为我们目前正在my\\u users\\u shortcode处理程序中运行PHP代码,所以您可以从那里回显链接,而不是尝试返回PHP代码片段,以便稍后尝试执行(这将不起作用),即。

function my_users_shortcode( $atts, $content ) {
    if ( is_user_logged_in() ) {
        echo \'<a href="\' . home_url() . \'/author/ \' .
             get_the_author_meta( \'user_login\',  wp_get_current_user()->ID ) .
             \'"> My personal page</a>\';
    } else {
        echo \'<a href="\' . wp_login_url() . \'" title="Login">Login</a>\';
    }
}
add_shortcode( \'my_shortcode\', \'my_users_shortcode\' );
也就是说,正如我在评论中所讨论的get_author_posts_url 生成作者页面URL,而不是自己构建它,我认为您应该有一些esc_urls也是:

function my_users_shortcode( $atts, $content ) {
    if ( is_user_logged_in() ) {
        echo \'<a href="\' . esc_url( get_author_posts_url( wp_get_current_user()->ID ) ) .
             \'">My personal page</a>\';
    } else {
        echo \'<a href="\' . esc_url( wp_login_url() ) . \'" title="Login">Login</a>\';
    }
}
add_shortcode( \'my_shortcode\', \'my_users_shortcode\' );
(如果将来您希望文本可翻译,则需要将这些部分__(\'\') 也是)

相关推荐

在使用_Author挂钩时,如何确定生成对`the_Author()`的每次调用的PHP文件?

the_author() filter hook 可用于修改的输出the_author(). 使用钩子时,是否可以知道哪个PHP文件生成对the_author()?例如,假设我将此自定义函数附加到the_author() 过滤器挂钩,用于修改the_author() 输出:add_filter(\"the_author\", \"change_author\"); function change_author($author) { $author = \"NEW AUTHOR!\