您的错误是您编写了if
在sprintf参数列表中。你不能那样做。相反,您可以使用ternary operator, 其中包含语法
<condition> ? <result if true> : <result if false>
例如:。
$byline = sprintf(
__(\'by %s\'),
function_exists(\'coauthors_posts_links\')
? (\'<span class="author vcard">\' .
coauthors_posts_links( null, null, null, null, false ) . \'</span>\')
: (\'<span class="author vcard"><a class="url fn n" href="\'.esc_url(
get_author_posts_url($author_id)
).\'">\'.esc_html(get_the_author_meta(\'display_name\', $author_id)).
\'</a>\'.\'</span>\')
);
(为了清晰起见,添加了括号-您可能不需要全部使用它们)
或者为帖子链接使用单独的变量,并首先使用if-else设置,例如。
if (function_exists(\'coauthors_posts_links\')) {
$author_post_links = coauthors_posts_links( null, null, null, null, false );
} else {
$author_post_links = \'<a class="url fn n" href="\' .
esc_url( get_author_posts_url( $author_id ) ) .
\'">\' . esc_html( get_the_author_meta( \'display_name\', $author_id ) ) . \'</a>\';
}
$byline = sprintf(
__(\'by %s\'),
\'<span class="author vcard">\' . $author_post_links . \'</span>\' );
如评论中所述
默认情况下coauthors_posts_links()
将回显链接并将其作为字符串返回,这不是您想要的。您需要传递$echo=false,这是第五个参数,因此我们需要用默认的null值填充前四个参数我想你不想esc_html()
的输出coauthors_post_links()
所以我也把它去掉了