Как получить корневой URL-адрес сайта при использовании объекта Wordpress Gutenberg wp
Я только что создал свой первый плагин блока Gutenberg, используя пакет npm create-guten-block
.
Функция редактирования выглядит как код, который вы видите ниже. Но он дает 404, не найденный наapiFetch()
звоните, потому что веб-сайт находится в папке, а не в корне домена. Другими словами: структура имени хоста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-адресом сайта.
2 ответа
Просто нашел решение сам.
в init
перехватчик вашего плагина блока Gutenberg, у вас может быть функция, которая создает глобальный объект данных для использования в файле редактора Wordpress block.js
.
Итак, в init.php
внутри init
вы можете добавить:
wp_localize_script(
'custom_block',
'cs_data',
[
'siteUrl' => get_site_url()
]
);
Таким образом глобальный объект cs_data
доступен в block.js
. Таким образом, теперь вызов Fetch может использовать динамический путь вот так.
wp.apiFetch( {
url: cs_data.siteUrl + '/wp-json/custom-data/v1/post-types'
} ).then( postTypes => {
props.setAttributes( {
postTypes: postTypes
} );
} );
Надеюсь это поможет.
Попробуйте обновить свой site_url
или home_url
site_url()
всегда будет местом, откуда вы сможете попасть на сайт, если home_url()
будет там, где вы установили свою домашнюю страницу.
Попробуйте установить home_url()
в " http://localhost/websitename ", открыв и отредактировав поле " Общие> Настройки"WordPress address (URL)".
Вы также можете определить пути программно, отредактировав файл wp-config.php:
define( 'WP_HOME', 'http://localhost/websitename/' );
define( 'WP_SITEURL', 'http://websitename.local' );
Тогда вы могли бы использовать get_home_url()
чтобы получить правильный путь.