Erstellen Sie eine Bearbeitungsseite für Post-Variablen

Ich muss eine leere PHP-Seite erstellen, die eine POST-Anfrage verarbeitet. Grundsätzlich schickt mir eine Seite ein paar Post-Variablen. Ich muss diese Variablen mit dem Mycred-Plugin verwenden. Hier ist mein Code:

require_once("../../../../wp-load.php"); if (isset($_POST['reward_amount'])) { $toaward = $_POST['reward_amount']; $user = $_POST['sid']; if (!function_exists(mycred_add)) echo "Failed to add!"; if (mycred_add('Points_for_______________', 1, 1, '%plural% for ------ completion', $_POST['oid'] )) { echo "Success!"; //header("HTTP/1.1 200 OK"); } else { echo "Fail!"; //header("HTTP/1.1 412 Precondition Failed"); } } 

Dies funktioniert, aber die Site, die ich verwende, lässt nicht zu, dass HTML in der HTTP-Antwort zurückgegeben wird. Wie entferne ich den HTML-Code, der von wp-load.php aber wp-load.php immer noch die WordPress-function Unterstützung, so dass ich WordPress-functionen verwenden kann? Ich habe auch versucht, wp-blog-header.php mit wp-blog-header.php , aber ohne Erfolg.

Solutions Collecting From Web of "Erstellen Sie eine Bearbeitungsseite für Post-Variablen"

Du siehst eine Menge Code, der wp-load.php oder wp-blog-header.php , um die WordPress-API innerhalb einer PHP-Seite zu verwenden, die außerhalb des WordPress-Kontexts geladen wird. Es gibt oft einen besseren Weg, dies zu erreichen. Es ist auch erwähnenswert, dass jedes Plugin, das das tut, aus dem WordPress.org Plugin-Repository aus gutem Grund abgelehnt wird – es ist anfällig für mehrere Arten von Fehlern.

Wie auch immer, in diesem Fall würde ich einen Rewrite-Endpunkt hinzufügen , um Anfragen zu richten, also wird die Anfrage von WordPress bearbeitet.

 function wpd_mycred_endpoint(){ add_rewrite_endpoint( 'mycred', EP_ROOT ); } add_action( 'init', 'wpd_mycred_endpoint' ); 

Wie immer, wenn Rewrite-Regeln modifiziert werden, müssen sie geleert werden, um wirksam zu werden. Dies kann über die API oder einfach über die Seite Einstellungen> Permalinks erfolgen.

Haken Sie dann die parse_request Aktion, prüfen Sie, ob Ihr Endpunkt gesetzt ist, und führen Sie Ihre Verarbeitung dort aus. Beenden Sie dann die Skriptausführung, sodass nichts anderes ausgegeben wird.

 function wpd_mycred_parse( $request ){ if( array_key_exists( 'mycred', $request->query_vars ) ){ // do your POST processing... die; } } add_action( 'parse_request', 'wpd_mycred_parse' ); 

Sie können eine Seitenvorlage erstellen und dann eine Seite mit dieser Vorlage mit der URL http://mydomain.com/reward-amount erstellen. Innerhalb der Seitenvorlage können Sie Ihren Code ohne require_once einfügen.

BEARBEITEN

Lies Milo einfach antworten. Ist viel besser als meins.