Как вызвать функцию в плагине WordPress с другого сайта

Я создаю плагин и устанавливаю его на любом сайте WordPress. По какой-то причине мне нужно вызвать функцию на этом плагине с другого сайта (а не на сайте wordpress).

Я уже пытаюсь использовать cURL и file_get_contents для вызова функции, на каком-то сайте WordPress она работает хорошо, но на каком-то другом сайте WordPress она не работает.

Это не удалось вызвать функцию, потому что на сайте wordpress есть URL-адрес переадресации, или на сайте WordPress установлены другие плагины, такие как captcha, security и т. Д.

Это код / ​​функция в моих плагинах:

Class Myplugin{ .......... function get_wp_version(){ // to do } function call_api(){ if($_GET['get_wp_version'] && $_GET['token']){ $wp_version = $this->get_wp_version(); echo $wp_version; } } ........ } 

И это код, который я использовал для вызова функции с другого сайта:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://mysite.com/?call_api=get_wp_version&token=xxx'); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_TIMEOUT, 0); $curl_msg = curl_exec($ch); 

Любая помощь будет оценена!

Ой, опечатка! Функционал моего плагина должен быть таким:

 Class Myplugin{ .......... function get_wp_version(){ // to do } function call_api(){ if($_GET['call_api'] && $_GET['token']){ if($_GET['call_api'] == 'get_wp_version'){ $wp_version = $this->get_wp_version(); echo $wp_version; } } } ........ } 

Solutions Collecting From Web of "Как вызвать функцию в плагине WordPress с другого сайта"

Существует два способа реализации этого

1. Используйте API AJAX

Это самый быстрый способ сделать это. Просто зарегистрируйте действие ajax и используйте этот URL-адрес для отправки запросов.

пример

 add_action('wp_ajax_api-call', 'wpse_156943_ajax_api_handle_request'); function wpse_156943_ajax_api_handle_request(){ // security check validation // do whatever you want to do } 

URL-адрес запроса будет выглядеть как http://example.com/wp-admin/admin-ajax.php?action=api-call

2. Создайте конечную точку URL

Создайте много удобной конечной точки. Например, http://example.com/my-api

пример

 add_action( 'wp_loaded', 'wpse156943_internal_rewrites' ); function wpse156943_internal_rewrites(){ add_rewrite_rule( 'my-api$', 'index.php?my-api=1', 'top' ); } add_filter( 'query_vars', 'wpse156943_internal_query_vars' ); function wpse156943_internal_query_vars( $query_vars ){ $query_vars[] = 'my-api'; return $query_vars; } add_action( 'parse_request', 'wpse156943_internal_rewrites_parse_request' ); function wpse156943_internal_rewrites_parse_request( &$wp ){ if (!array_key_exists( 'my-api', $wp->query_vars ) ) { return; } // security and validation // do whatever you want to do die(); } 

Надеюсь, поможет 🙂