Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/mehrshaddarzi/wp-rewrite-api/archive/refs/heads/master.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
WordPress Rewrite API Ajax
Use Rewrite API Method for Ajax Request in WordPress.
Rewrite API in WordPress is Very Faster than admin-ajax.php.
How to Install and Use
Activate this plugin, then Flush Rewrite in WordPress.
How to Create New Route
use WordPress_Rewrite_API_Request namespace in your class.
namespace WordPress_Rewrite_API_Request;
class post
{
/**
* @request_url => http://site.com/api/post/get
*/
public static function get()
{
wp_send_json_success(array(
'data' => get_post($_REQUEST['post_id'], ARRAY_A)
), 200);
}
}
And use rewrite_api variable in js:
$.ajax({
url: rewrite_api.url + '/' + rewrite_api.prefix + '/post/get',
type: 'GET'
});
Create Flexible Methods
We want to create a function to add to cart in WooCommerce:
1) Create PHP Class
namespace WordPress_Rewrite_API_Request;
class wc_cart
{
public function __construct()
{
add_action('wp_enqueue_scripts', array($this, '_register_js_script'), 7);
}
// Add Js Script
// Helper Function start with _
public function _register_js_script()
{
wp_enqueue_script('woocommerce-cart-rewrite', '../wc-cart.js' , array('jquery', 'wp-rewrite-api'), '1.0.0', true);
}
/**
* @request_url => http://site.com/api/wc_cart/add
*/
public static function add()
{
// Check Isset Params
if(!isset($_REQUEST['product_id'])) {
WordPress_Rewrite_API_Request::empty_param('product_id');
}
// Add To Product
$cart_hash_item = WC()->cart->add_to_cart(sanitize_text_field($_REQUEST['product_id']), 1);
// Response
wp_send_json_success(array(
'cart_key' => $cart_hash_item
), 200);
}
}
2) Create Js File (wc-cart.js)
jQuery(document).ready(function ($) {
let woocommerce_cart_methods = {
wc_add_to_cart: function ($tag = false, $product_id = 0) {
// Sanitize Params
if ($tag !== false) {
$product_id = $tag.attr('data-product-id');
}
window.rewrite_api_method.request('wc_cart/add', 'GET', {
'product_id': $product_id
}, $tag);
}
};
// Push To global Rewrite API Js
if (typeof window.rewrite_api_method !== 'undefined') {
$.extend(window.rewrite_api_method, woocommerce_cart_methods);
}
});
3) Use in Every Project according to FrontEnd
<a href="#" data-function="wc_add_to_cart" data-product-id="123">Add to Cart</a>
jQuery(document).ready(function ($) {
// Get All Methods
const _methods = window.rewrite_api_method;
const add_action = window.rewrite_api_method['add_action'];
/**
* Add Action For Add to Cart
*/
add_action('wc_cart/add',
function (data, event) {
alert('before-send');
}, function (data, event) {
alert('success');
}, function (data, event) {
alert(_methods.to_json(data));
});
});
How to Change Prefix api Url
use add_filter('rewrite_api_request_prefix_url', 'api'); in WordPress, then flush rewrite;
How to Get My Custom Url in Template function
echo get_rewrite_api_url($class = 'user', $method = 'login'); // http://site.com/rewrite-api/user/login
How To Disable Load Custom UI Component
add_filter('rewrite_api_request_ui_component', '__return_false');
For Disable Custom Ui Component, see ui-component.php and use every filter. for example:
add_filter('rewrite_api_request_ui_component_jquery_confirm', '__return_false');