4

我刚刚使用 npm 包创建了我的第一个古腾堡块插件create-guten-block

编辑功能类似于您在下面看到的代码。但它在apiFetch()通话中找不到 404,因为该网站位于文件夹中,而不是域的根目录中。换句话说:主机名的结构http://localhost/websitename/不是websitename.local.

edit: ( props ) => {
    if ( ! props.attributes.categories ) {
        wp.apiFetch( {
           url: '/wp-json/wp/v2/categories'
        }).then(categories => {
            props.setAttributes( {
                categories: categories
            });
        });
    }
    return (
        true
    );
}

那么什么是相当于 PHP 的get_site_url()呢?该数据是否存储在wp对象中的某个位置?如果有,在哪里?因为我需要在前面加上/wp-json/wp/v2/categories正确的网站 URL。

4

2 回答 2

2

刚刚自己找到了解决方案。

init您的 Gutenberg 块插件的挂钩中,您可以拥有一个创建全局数据对象的函数,供您在 Wordpress 编辑器文件中使用block.js

所以,在钩子init.php里面init你可以添加:

wp_localize_script(
    'custom_block',
    'cs_data',
    [
        'siteUrl'       => get_site_url()
    ]
);

这样全局对象cs_datablock.js. 所以 Fetch 调用现在可以像这样使用动态路径。

wp.apiFetch( {
    url: cs_data.siteUrl + '/wp-json/custom-data/v1/post-types'
} ).then( postTypes => {
    props.setAttributes( {
      postTypes: postTypes
    } );
} );

希望这可以帮助。

于 2019-11-18T09:26:58.927 回答
-2

尝试更新您的site_urlhome_url

site_url()将始终是您可以访问该站点的实时位置,而home_url()将是您设置主页的位置。

尝试通过访问并编辑“常规”>“设置”“WordPress 地址 (URL)”字段,将其设置home_url()为“ http://localhost/websitename ”。

您还可以通过编辑wp-config.php以编程方式定义路径:

define( 'WP_HOME', 'http://localhost/websitename/' );
define( 'WP_SITEURL', 'http://websitename.local' );

然后你可以get_home_url()用来检索正确的路径。

于 2019-11-14T15:09:24.400 回答