我想在我的 wordpress 站点 functions.php 文件中添加一个自定义函数,如下所示:
//Test adding basic REST API custom endpoint.
/**
* Grab latest post title by an author!
*
* @param array $data Options for the function.
* @return string|null Post title for the latest,
* or null if none.
*/
function my_awesome_func( $data ) {
$posts = get_posts( array(
'author' => $data['id'],
) );
if ( empty( $posts ) ) {
return null;
}
return $posts[0]->post_title;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'walden/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
但是无论我在哪里粘贴这段代码,它都会导致整个函数失败,并且所有其余的 api 链接都给我错误。
我应该将这段代码粘贴到functions.php中的哪个位置,这样它就不会破坏所有其他功能?
答案 0 :(得分:1)
从 WordPress 5.5 开始,如果未提供 permission_callback,REST API 将发出 _doing_it_wrong 通知。
<?php
add_action( 'rest_api_init', function () {
register_rest_route( 'walden/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
'permission_callback' => '__return_true',
) );
} );
我猜你的 register_rest_route 函数缺少 permission_callback
参数。
如果您提供更多有关错误的信息会更好。
答案 1 :(得分:-1)
我发现唯一的问题实际上是函数本身的名称,所以我更改了函数的名称,现在它可以完美运行