WordPress добавить правило перезаписи, чтобы указать на файл плагина

Во-первых, я попробовал несколько разных предложений от других пользователей stackoverflow, но мне не повезло.

Я пытаюсь создать своего рода api изнутри плагина. Задача состоит в том, чтобы внешняя система вызывала URL-адрес внутри моего плагина, чтобы он инициировал внутреннюю процедуру.

В настоящее время у меня есть класс, который имеет конструктора. Это внутри этого конструктора.

add_action( 'init', 'my_rewrite' ); function my_rewrite() { global $wp_rewrite; $plugin_url = plugins_url( 'my-api.php', __FILE__ ); $plugin_url = substr( $plugin_url, strlen( home_url() ) + 1 ); add_rewrite_rule('/my-api/(.*)', $plugin_url ,'top'); $wp_rewrite->flush_rules(true); } 

Затем он генерирует RewriteRule в моем файле htaccess.

 RewriteRule ^/my-api/(.*) /wp-content/plugins/my-api/classes/my-api.php [QSA,L] 

Ниже приведен весь файл .htaccess для контекста

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^/slurp-api/(.*) /wp-content/plugins/slurp/classes/my-api.php [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 

По какой-либо причине, когда я посещаю site.dev/my-api, я вижу страницу 404, а не инструкцию echo, которая должна запускаться из my-api.php

Сайт-разработчик запускается через mamp pro, если это какая-то помощь.

Любые указания относительно того, почему этот переписывать не играет справедливость, будут очень признательны.

благодаря

Related of "WordPress добавить правило перезаписи, чтобы указать на файл плагина"

Удалите переднюю косую черту с исходного запроса

 RewriteRule ^my-api/(.*) /wp-content/plugins/my-api/classes/my-api.php [QSA,L] 

И убедитесь, что файл my-api.php существует в месте, которое вы my-api.php перезаписи:

 /wp-content/plugins/my-api/classes/my-api.php 

Чтобы не преднамеренно дать ему несуществующую цель.

Как отмечает @Starkeen в комментариях, вы также можете удалить ведущую косую черту с целью, как это

 RewriteRule ^my-api/(.*) wp-content/plugins/my-api/classes/my-api.php [QSA,L] 

Итак, после долгих переделок я натолкнулся на правильный ответ. Я изменил эту строку на

 add_rewrite_rule('my-api', $plugin_url ,'top'); 

Я пробовал много вариаций, но этот, наконец, работал. Спасибо за помощь.