如果WordPress安装在子目录中,则来自插件的REST路径不起作用

时间:2017-12-26 作者:dingo_d

这个问题基本上是我创建的trac记录单的副本#42973.

Theme Sniffer 插件I已替换admin-ajax.php 具有REST 端点。

因此,当您想要对主题运行检查时,调用的用于检查主题的路由类似于

https://example.com/wp-json/theme-sniffer/v1/sniff-run

现在如果我在一个子目录中安装WordPress/test 路线应为

https://example.com/test/wp-json/theme-sniffer/v1/sniff-run

但事实并非如此。嗅探运行将尝试在访问终结点https://example.com/wp-json/theme-sniffer/v1/sniff-run 这根本不存在!

路线的添加方式如下:

<?php
add_action( \'rest_api_init\', \'theme_sniffer_endpoint_init\' );
/**
 * Register endpoints function
 *
 * @since 0.1.0
 */
function theme_sniffer_endpoint_init() {
        register_rest_route( \'theme-sniffer/v1\', \'/sniff-run\', array(
                \'methods\'  => \'POST\',
                \'callback\' => \'theme_sniffer_run_sniffer\',
        ) );
        register_rest_route( \'theme-sniffer/v1\', \'/individual-sniff\', array(
                \'methods\'  => \'POST\',
                \'callback\' => \'theme_sniffer_individual_sniff\',
        ) );
}
您可以检查代码here.

我的猜测是,如果插件名称空间没有定义,子目录将被忽略,并且它将假定端点来自根文件夹。

我还没有详细介绍WP中的REST体系结构(将在本周晚些时候介绍),但如果是这样,插件的名称空间是否会有所帮助?

1 个回复
最合适的回答,由SO网友:mmm 整理而成

AJAX调用中的URL不好

要更正此问题,请修改函数theme_sniffer_admin_scripts 在里面inc/admin.php 将主页URL添加到wp_localize_script :

"homeURL" => home_url(),
然后在中的2个AJAX调用中使用此URLjs/admin.js :

url: localizationObject["homeURL"] + \'/wp-json/theme-sniffer/v1/sniff-run\',

结束

相关推荐

插件放置在/wp-content/plugins内的文件夹中时不保存值

我得到了WordPRess插件的以下代码,它在每个页面/后期编辑屏幕上添加了两个自定义输入。然后将这些值保存并输出到前端页面的标题中。如果代码位于内部,则可以正常工作。php文件并直接放入“wp内容/插件”。然而,如果我把它放在插件(如“wp-content/plugins/myplugin”)中自己的文件夹中,那么在通过编辑屏幕保存帖子/页面时,输入字段不会保存。此外,它不会向前端页面html标题部分输出任何内容。这似乎是一个被放弃的项目,所以我无法与原始开发人员一起制定解决方案。然而,代码中的某些内容