wp_rewrite in ein WordPress-Plugin
Ok, ich habe diesen code, ich habe mit ausspucken news zu einer Anwendung von mir. Es hat funktioniert, bis heute. Ich habe Aussparung, um die Logik in den folgenden code, um es simpiler. Aber es sollte "ARBEITEN" Kann mir jemand helfen diesen code beheben, wo es funktioniert und richtig gemacht wird? Ich weiß, es ist gehackt zusammen , aber es schien keine Probleme zu haben, bis heute. Ich habe nicht aktualisiert, nichts, weiß nicht, was der deal ist.
Plugin Name: MyPlugin Example
Version: 1.0.1
If ( ! class_exists("MyPlugin") )
{
class MyPlugin
{
var $db_version = "1.0"; //not used yet
function init()
{
//Nothing as of now.
}
function activate()
{
global $wp_rewrite;
$this->flush_rewrite_rules();
}
function pushoutput( $id )
{
$output->out =' The output worked!';
$this->output( $output );
}
function output( $output )
{
ob_start();
ob_end_clean();
header( 'Cache-Control: no-cache, must-revalidate' );
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Content-type: application/json' );
echo json_encode( $output );
//Must encode this...
}
function flush_rewrite_rules()
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function createRewriteRules( $rewrite )
{
global $wp_rewrite;
$new_rules = array( 'MyPlugin/(.+)' => 'index.php?MyPlugin=' . $wp_rewrite->preg_index(1) );
if ( ! is_array($wp_rewrite->rules) )
{
$wp_rewrite->rules = array();
}
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
return $wp_rewrite;
}
function add_query_vars( $qvars )
{
$qvars[] = 'MyPlugin';
return $qvars;
}
function template_redirect_intercept()
{
global $wp_query;
if ( $wp_query->get('MyPlugin') )
{
$id = $wp_query->query_vars['MyPlugin'];
$this->pushoutput( $id );
exit;
}
}
}
}
If ( class_exists("MyPlugin") )
{
$MyPluginCode = new MyPlugin();
}
If ( isset($MyPluginCode) )
{
register_activation_hook( __file__, array($MyPluginCode, 'activate') );
add_action( 'admin-init', array(&$MyPluginCode, 'flush_rewrite_rules') );
//add_action( 'init', array(&$MyPluginCode, 'init') );
add_action( 'generate_rewrite_rules', array(&$MyPluginCode, 'createRewriteRules') );
add_action( 'template_redirect', array(&$MyPluginCode, 'template_redirect_intercept') );
//add_filter( 'query_vars', array(&$MyPluginCode, 'add_query_vars') );
}
- Ich im Grunde nur brauchen, um in der Lage sein, den input zu nehmen von einer URL und Ausgang einige JSON-Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Änderte ich ein wenig von euren code in den Prozess, aber dies war für mich:
Ich habe kommentiert die wichtigen Teile, aber was ich Tat, war im Grunde bewegen Sie Ihren Haken über
use_filter
eher alsadd_action
. Ich zog auch die Filter in der Reihenfolge, die Sie auch tatsächlich benutzt WordPress. Schien die Sache zu tun zu der Zeit.Schließlich, stellen Sie sicher, dass Ihre permalinks verwenden pretty URLs. Ich hatte ein Problem, wo meine waren auf default eingestellt, das macht WordPress ignorieren, die rewrite-Bedingungen, die Sie sonst benötigen, zu analysieren. Ändern Sie über einige hübsche URLs und Ihre Bedingungen zu aktualisieren.
Lassen Sie mich wissen, ob das funktioniert für Sie. Hoffe, das hilft.
Dank, Joe