Iam 注册一个 rest 路由(请参阅代码 1),其中路由的内容将等于wpso_messages数据库的结果。
对定制路由的get请求的结果JSON如下。(参见#合成Json)
我想在Rest路线中注册2个额外的自定义字段,它们是:
我知道我可能必须使用register rest字段函数(参见示例代码2),但是它似乎没有连接到注册的自定义rest路由,而且,我需要访问现有api回调中的user_from列。
有什么建议吗?
#代码1:注册Rest路线
<?php
function get_wp_query() {
global $wpdb;
$row = $wpdb->get_results("SELECT * FROM wpso_messages");
return $row;
};
add_action( 'rest_api_init', function () {
register_rest_route( 'wp/v2', 'messages', array(
'methods' => 'GET',
'callback' => 'get_wp_query'
) );
} );
#结果JSON
{"id":"1","user_from":"82","user_to":"1","created_at":"2022-01-07 10:25:56","消息":"我有兴趣出价","listing_id":"22775","看到":"1"}
代码2:
function get_custom_fields() {
return 'our awesome endpoint';
}
add_action( 'rest_api_init', 'add_custom_fields' );
function add_custom_fields() {
register_rest_field(
'messages',
'custom_fields', //New Field Name in JSON RESPONSEs
array(
'get_callback' => 'get_custom_fields', // custom function name
'update_callback' => null,
'schema' => null,
)
);
}
基于Nawaz提案的解决方案:
function get_wp_query() {
global $wpdb;
$rows = $wpdb->get_results("SELECT * FROM wpso_messages");
foreach( $rows as $index => $row ) {
$user_from_id = $rows[$index]->user_from;
$user_to_id = $rows[$index]->user_to;
$rows[$index]->username_from = get_user_by('id', $user_from_id)->display_name;
$rows[$index]->username_to = get_user_by('id', $user_to_id)->display_name;
}
return $rows;
};
add_action( 'rest_api_init', function () {
register_rest_route( 'wp/v2', 'messages', array(
'methods' => 'GET',
'callback' => 'get_wp_query'
) );
} );
在get_wp_query() 函数中,不要立即返回结果。首先,遍历它们并从那里添加必填字段。
对于您的情况:
function get_wp_query() {
global $wpdb;
$rows = $wpdb->get_results("SELECT * FROM wpso_messages");
foreach( $rows as $index => $row ) {
$rows[$index]->username_from = get_user_by('id', $row.user_from)->display_name;
$rows[$index]->username_to = get_user_by('id', $row.user_to)->display_name;
}
return $rows;
};
问题内容: 我想在定义类时注册一个类的实例。理想情况下,以下代码可以解决问题。 不幸的是,此代码生成错误。 发生的事情是在我尝试实例化a的行上,但装饰器尚未返回,因此它不存在。 是否使用元类解决了这个问题? 问题答案: 是的,元类可以做到这一点。元类的方法返回该类,因此只需在返回之前注册该类。 前面的示例在Python 2.x中有效。在Python 3.x中,的定义略有不同(虽然未更改,但未显示-
我有一个使用Node.js和Express构建的web应用程序。现在我想列出所有注册的路线及其适当的方法。 例如,如果我执行了 我想检索一个对象(或与之相当的东西),例如: 这可能吗?如果可能,如何实现? 更新:同时,我创建了一个名为get-routes的npm包,它从给定的应用程序中提取路由,解决了这个问题。目前,只支持Express4.x,但我想现在这是可以的。只是通知一下。
问题内容: 我有一个使用Node.js和Express构建的Web应用程序。现在,我想用适当的方法列出所有已注册的路由。 例如,如果我执行过 我想检索一个对象(或等效的东西),例如: 这可能吗?如果可以,怎么办? 更新: 同时,我创建了一个名为get-routes的npm软件包,该软件包从给定的应用程序中提取路由,从而解决了此问题。当前,仅支持Express 4.x,但我想现在可以了。仅供参考。
考虑一个案例,我有2个对象映射器实例。我希望必须从序列化中排除使用某些自定义注释注释的字段,而其他映射器包含(忽略注释) 就像类有3个字段a,b,c和c用一些注释注释(比如@IgnoreField)(它们的n个类,每个类都有它们不应该被序列化的字段) 现在,第一个对象映射器 o1 必须仅序列化 a 和 b。而第二个对象映射器o2可以序列化a,b和c。 任何具有不同字段的类都可能发生这种情况,其中一
我想基于自定义布尔值设置表单元素的有效性。考虑下面的密码字段: 如果重复的密码与原始密码匹配,我想标记第二个输入字段有效。类似的东西: 为此,我找不到任何角度指示。有什么想法吗?也许我可以为此制定自己的指令?不幸的是,我不是一个角度专家。。。应该是这样的: 谢谢
问题内容: 我有以下Java代码- 我得到的错误是 如何正确访问注释字段? 问题答案: 默认情况下,注释在运行时不可用。您需要添加到注释定义以使其可用于运行时处理。例如: 在实践中,还应在实际尝试从字段中删除注释之前,检查该字段是否确实具有给定的注释。 另外,指定注释所属的元素类型也是一种好习惯。因此,您的示例将是: