【问题标题】:How to get user meta by user ID in a custom Gutenberg block如何在自定义古腾堡块中通过用户 ID 获取用户元数据
【发布时间】:2023-02-11 23:38:43
【问题描述】:

正如标题所说,我只需要在自定义 Gutenberg 块(编辑器端)中通过用户 ID 获取用户元数据。基本上这将在 PHP 中返回什么:get_user_meta( $user_id, 'meta_key', true ); 是我需要的数据。

wp.data.select('core').getUserMeta(userId,'meta_key',true); 似乎不起作用,但这完全是猜测,因为我似乎找不到任何关于它的文档。有谁知道我该怎么做?

更新: 我想出了一个解决方法和posted it here,但如果有人知道正确的方法,请仍然发布您的答案!

【问题讨论】:

  • 由于古腾堡通常是静态内容,因此用 JS 做这件事可能不是最好的想法,而是古腾堡 PHP 函数。我可能是错的,因为我不知道你的用例。
  • 谢谢@Frizzant - 你能澄清一下或者给我一个关于我应该研究什么的线索吗?这是一个动态块,所以我的前端工作正常,但我不知道 PHP 函数可以用于 Gutenberg 的编辑端。
  • 好吧,他们不可能。我不确定你是否在使用动态块,所以我假设你没有,因为我觉得大多数人都不知道它们的存在。在那种情况下,我将不得不自己做一些研究,抱歉。

标签: wordpress wordpress-gutenberg


【解决方案1】:

您的 useSelect(select => select('core').getUsers()); 方法与 outlined here 一样有效并且非常简洁。我有一个类似的要求,并找到了一种不同的方法来获取已在用户 REST API 中注册的自定义用户元数据。这可能不是更好的方法,只是使用 apiFetch 的不同方法:

import { useState, useEffect } from '@wordpress/element';

/**
* @param id User id
* @param meta_key Any meta_key value
*/
export function UserMeta({ id, meta_key }) {

    const [userData, setUserData] = useState({ id: 1 });

    useEffect(() => {
        // Use apiFetch to retrieve a single user by <id>
        async function getUser() {
            try {
                let response = await wp.apiFetch({ path: '/wp/v2/users/' + id });
                setUserData(response);
            } catch (error) {
                console.log(error.message);
            }
        }
        getUser();

    }, [id]);

    return (
        <span>{userData?.[meta_key] ?? 'empty..'}</span>
    );
}

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2022-10-20
    • 2019-08-02
    • 2019-09-25
    • 2020-11-05
    相关资源
    最近更新 更多