Ich möchte ein WordPress-Plugin erstellen, das POST/GET-Anforderungen an eine bestimmte URL von außen abfangen kann, sodass ich externe PHP-Code-POST-Daten an das WordPress-Plugin senden kann, die das Plugin dann intern weiterverarbeiten kann.
Ich möchte keine Blogbeiträge oder Seiten von außen erstellen, ich weiß, dass die XML-RPC-Schnittstelle dafür existiert. Ich spreche davon, Daten von außen in WordPress zu posten und sie dann innerhalb eines Plugins weiter zu verarbeiten.
Ich denke, ich könnte mich auch direkt mit der WP DB verbinden, aber das ist wahrscheinlich keine sehr saubere Lösung und könnte kaputt gehen, wenn ich WP aktualisiere.
Wie Sie bereits über WordPress XMRPC wissen: Ihr Plugin kann eigene Funktionen für XMLRPC registrieren, die dann auf die Anfrage hören. Sie können dann eine POST-Anfrage an den XMLRPC-Endpunkt senden und die Plugin-Funktion wird dann ausgelöst.
Das folgende Codebeispiel ist eine einfache Plugin-Klasse, die eine Funktion beim XMLRPC-Endpunkt registriert my.recieve
. Es zeigt, wie die Callback-Funktion für diese Zeichenfolge registriert ist:
/**
* XML RPC Plugin
*/
return RecievePostPlugin::bootstrap();
class RecievePostPlugin
{
private static $instance;
public static function bootstrap()
{
if (null === $this->instance)
$this->instance = new __CLASS__;
return $this->instance;
}
public function __construct()
{
add_filter('xmlrpc_methods', array($this, 'addXMLRPCActions'));
}
public function addXMLRPCActions(array $methods)
{
$methods['my.recieve'] = array($this, 'recieveXMLRPCAction');
return $methods;
}
public function recieveXMLRPCAction(array $arguments)
{
// your code here, POST can be accessed via $_POST
}
}
Wenn Ihnen der XMLRPC-Overhead nicht gefällt, können Sie einfach eine PHP-Datei als Teil Ihres Plugins erstellen und anfordern. Dann müssen Sie sich selbst darum kümmern, alle WP-Funktionen zu laden, die Sie möglicherweise verwenden möchten (z. B. Datenbankzugriff usw.).
Sie können eine Rewrite-Regel erstellen, die eine phantasievolle, hübsche URL zu einer Datei im Verzeichnis Ihres Plugins umleitet. Und diese Datei enthält $_POST-Daten. Von dem WordPress-Seite Beschreibung von WP_Rewrite:
function feed_dir_rewrite( $wp_rewrite ) {
$feed_rules = array(
'index.rdf' => 'index.php?feed=rdf',
'index.xml' => 'index.php?feed=rss2',
'(.+).xml' => 'index.php?feed=' . $wp_rewrite->preg_index(1)
);
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// Hook in.
add_filter( 'generate_rewrite_rules', 'feed_dir_rewrite' );
13448200cookie-checkWie poste ich Daten in ein WordPress-Plugin?yes
Was meinst du damit, die POST/GET-Anfrage abzufangen? Ist das nicht $_POST/$_GET?
– xdazz
22. August 2011 um 7:27 Uhr