Last active
February 13, 2019 10:31
-
-
Save orangerdev/a35ab931ada2ba0e2d9a505a5bae0d81 to your computer and use it in GitHub Desktop.
REST MVC for WordPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace QMQUOTE\Admin; | |
class Rest | |
{ | |
private $key = 'quoteme'; // change this prefix | |
private $script = 'quoteme-action'; // change this script action | |
/** | |
* Construction | |
*/ | |
public function __construct() | |
{ | |
} | |
/** | |
* Register rewrite url | |
* Hooked via action init, priority 1 | |
* @return void | |
*/ | |
public function register_rewrite_url() | |
{ | |
// enable rest request without value | |
add_rewrite_rule('^'.$this->key.'/([^/]*)/([^/]*)/?', | |
'index.php?script='.$this->script.'&controller=$matches[1]&action=$matches[2]&value=0', | |
'top' | |
); | |
// rest request with value | |
add_rewrite_rule('^'.$this->key.'/([^/]*)/([^/]*)/([^/]*)/?', | |
'index.php?script='.$this->script.'&controller=$matches[1]&action=$matches[2]&value=$matches[3]', | |
'top' | |
); | |
} | |
/** | |
* Register custom query vars | |
* @param array $vars | |
* @return array | |
*/ | |
public function register_query_vars($vars) | |
{ | |
$vars[] = 'script'; | |
$vars[] = 'controller'; | |
$vars[] = 'action'; | |
$vars[] = 'value'; | |
return $vars; | |
} | |
/** | |
* Check rest url API | |
* Hooked via template_redirect, priority 1 | |
* @return void | |
*/ | |
public function check_request_url() | |
{ | |
global $wp_query; | |
if(isset($wp_query->query['script']) && $this->script === $wp_query->query['script']) : | |
$controller = $wp_query->query['controller']; | |
$action = $wp_query->query['action']; | |
$value = $wp_query->query['value']; | |
header("HTTP/1.1 200 OK"); | |
do_action($this->key.'/rest/'.$controller.'/'.$action,$value); | |
exit; | |
endif; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment