在 WordPress 循环中以短代码获取帖子的作者数据

问题描述 投票:0回答:1

我正在为 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()
制作了一个类似的函数,并且效果非常好。我不明白为什么它适用于修改日期但不适用于作者。

我尝试了这篇文章这篇文章中引用的解决方案,但它不起作用。

php wordpress wordpress-theming wordpress-shortcode
1个回答
0
投票

您需要像在第二个链接线程中一样获取作者 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]

© www.soinside.com 2019 - 2024. All rights reserved.