#javascript #wordpress #rest #wordpress-theming #wordpress-gutenberg
Вопрос:
Я работаю над своей первой пользовательской темой wordpress и работаю над пользовательским блоком Гутенберга. Пока это работает на моей установке. Но беспокоится о том, когда пользователи будут устанавливать его по разным путям. Я выполняю вызов REST API, подобный этому:
function( props ) { if (! props.attributes.categories ){ wp.apiFetch( { url: '/wordpress/wp-json/wp/v2/categories' } ).then(categories =gt; { props.setAttributes ({ categories: categories }) }); }
Я установил wordpress локально с помощью MAMP по пользовательскому пути (/wordpress) вместо основной папки. Так http://localhost/wordpress/
. Мой вопрос в том, что URL API url: '/wordpress/wp-json/wp/v2/categories'
работает, потому что я указал точный путь, добавив /wordpress/
его перед обычным путем, но как я могу сделать его динамичным, чтобы он работал для любого пути, по которому пользователи устанавливают свой сайт wordpress?
Выполнение just url: '/wp-json/wp/v2/categories'
будет отлично работать для любого пользователя, пока wordpress установлен в индексной папке. Но что, если пользователь решит установить мою тему и плагин на сайт 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' =gt; get_rest_url() ) ); wp_enqueue_script( 'my_script' );
В js вы можете получить доступ к URL-адресу с помощью wpRestApi.url
wpRestApi.url 'wp/v2/categories'