如何为 wordpress 网站主题添加自定义功能?

时间:2021-03-03 06:34:40

标签: php wordpress wordpress-rest-api

我想在我的 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中的哪个位置,这样它就不会破坏所有其他功能?

2 个答案:

答案 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)

我发现唯一的问题实际上是函数本身的名称,所以我更改了函数的名称,现在它可以完美运行