WordPress REST API не работает на пользовательском пути WordPress

#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'