我正在为 Wordpress 构建一个块主题。
我编写了一个短代码函数,该函数应该输出消息“按[作者的显示名称和作者的链接]”。 更具体地说,我尝试在搜索结果循环中使用它(搜索结果模板的主循环)。
function auteur_par(){
$auteur = get_the_author();
$auteur_nom = get_the_author_meta('display_name', $auteur);
$auteur_url = get_the_author_meta('user_url', $auteur);
return '<p>Par <a href="' . $auteur_url . '" target="_self" class="wp-block-post-author-name__link">' . $auteur_nom . '</a></p>';
}
add_shortcode('auteur_par', 'auteur_par');
我也尝试直接使用
get_the_author_meta
:
function auteur_par(){
$auteur_nom = get_the_author_meta('display_name');
$auteur_url = get_the_author_meta('user_url');
return '<p>Par <a href="' . $auteur_url . '" target="_self" class="wp-block-post-author-name__link">' . $auteur_nom . '</a></p>';
}
add_shortcode('auteur_par', 'auteur_par');
当我将其用作“Modèle de Publication”块中的简码时,两者都不起作用(我找不到该块的英文名称是什么,它是大纲中查询循环块下的块)。在页面上,该段落在那里,但变量是空的。 我使用
get_the_modified_date()
制作了一个类似的函数,并且效果非常好。我不明白为什么它适用于修改日期但不适用于作者。
您需要像在第二个链接线程中一样获取作者 ID,然后从该作者 ID,您将能够获取 WP_User 相关对象并从作者那里获取任何用户数据。
尝试以下操作:
function auteur_par_shortcode(){
$author_id = get_post_field ('post_author', get_the_ID());
$author_user = new WP_User($author_id);
return sprintf('<p>%s <a href="%s" target="_self" class="wp-block-post-author-name__link">%s</a></p>',
esc_html__('Par'), $author_user->user_url, $author_user->display_name);
}
add_shortcode('auteur_par', 'auteur_par_shortcode');
现在应该可以工作了。
用途:
[auteur_par]