Ich versuche, benutzerdefinierte Endpunkte hinzuzufügen (benutzerdefinierter Endpunkt bedeutet eine beliebige URL, die von WP nicht als Standard-URL erkannt wird, wie ein Permalink oder so.) Ich verwende WordPress-Plugin-Boilerplate “https://github.com/DevinVinson/WordPress-Plugin-Boilerplate“.
Ich möchte eine API-Anfrage an einen benutzerdefinierten Endpunkt senden. Ich erstelle eine neue Klassendatei, um Endpunkte zu registrieren, und füge diese Klassendatei in die Plugin-Aktivierungsmethode ein und rufe den add_action-Hook auf, aber es funktioniert nicht.
Erstellen Sie im Ordner „includes“ eine neue Datei „class-rigal-custom-Endpoint.php“.
<?php
class Rigal_custom_Endpoint {
private static $initiated = false;
public static function init() {
if ( ! self::$initiated ) {
self::init_hooks();
}
}
public static function init_hooks() {
self::$initiated = true;
add_action('init', 'add_endpoint');
}
/**
*
* @description Create a independent endpoint
*/
public static function endpoint() {
global $wp;
$endpoint_vars = $wp->query_vars;
// if endpoint
if ($wp->request == 'exercise/test') {
// Your own function to process endpoint
exit;
}
}
}
Nachdem ich diese Klassendatei in die Plugin-Aktivierungsmethode aufgenommen habe. (class-rigal-plugin-activator.php)
public static function activate() {
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-rigal-custom-endpoint.php';
add_action( 'init', array( 'Rigal_custom_Endpoint', 'init' ) );
add_action( 'parse_request', array( 'Rigal_custom_Endpoint', 'endpoint' ) , 0);
}
Wenn ich das Plugin aktiviere und “Übung/Test” in die URL einfüge, funktioniert es nicht. Würden Sie bitte eine Lösung vorschlagen, um das oben genannte Problem zu beheben?
Umfeld
PHP: 7.4 WordPress: 5.4 OS: Mac: 10.15.1 Browser: Chrome:Version 81.0.4044.122
Vielen Dank