WordPress REST API 不适用于自定义 wordpress 路径

Posted

技术标签:

【中文标题】WordPress REST API 不适用于自定义 wordpress 路径【英文标题】:WordPress REST API doesn't work on custom wordpress path 【发布时间】:2022-01-05 07:47:20 【问题描述】:

我正在开发我的第一个 wordpress 自定义主题和自定义 Gutenberg 块。到目前为止,它适用于我的设置。但担心用户何时将其安装在不同的路径上。 我正在像这样进行 REST API 调用:

function( props ) 
    if (! props.attributes.categories )
        wp.apiFetch( 
            url: '/wordpress/wp-json/wp/v2/categories'
         ).then(categories => 
            props.setAttributes (
                categories: categories
            )
        );
    

我已经使用 MAMP 在自定义路径 (/wordpress) 而不是主文件夹上本地安装了 wordpress。所以http://localhost/wordpress/。我的问题是,API URL url: '/wordpress/wp-json/wp/v2/categories' 有效,因为我已经指定了确切的路径,在通常的路径前面添加了 /wordpress/,但是我怎样才能使它动态,以便它适用于用户安装他们的 wordpress 网站的任何路径去?

只要在 index 文件夹中安装了 wordpress,任何用户都可以使用 url: '/wp-json/wp/v2/categories'。但是,如果用户决定将我的主题和插件安装在自定义路径下的 wordpress 网站上,例如 theme.com/wordpress-subfolder/ 怎么办?

提前感谢大家!

【问题讨论】:

【参考方案1】:

使用 get_rest_url() 的值本地化您的脚本。

wp_register_script( 'my-script' , 'path/to/the-script.js' );
wp_localize_script( 'my_script' , 'wpRestApi' , array( 'url' => get_rest_url() ) );
wp_enqueue_script( 'my_script' );

在js中可以通过wpRestApi.url访问url

wpRestApi.url + 'wp/v2/categories'

【讨论】:

以上是关于WordPress REST API 不适用于自定义 wordpress 路径的主要内容,如果未能解决你的问题,请参考以下文章

猫头鹰轮播导航箭头不适用于 WordPress

php 用于WordPress的SAAS REST API

Firebase 云消息传递 - PHP Rest API 不适用于 iOS

ElasticSearch 索引适用于 REST API,但不适用于 C# 代码

使 WordPress 用户元数据可用于 Rest-API

使用 JWT 访问 Rest API 适用于 Postman 但不适用于 Axios