Ok, ho questo codice che ho usato per sputare notizie a una mia applicazione. Funzionava fino ad oggi. Ho tagliato tutta la logica nel seguente codice per renderlo più semplice. Ma dovrebbe "LAVORARE" Qualcuno può aiutarmi a correggere questo codice su dove funziona, ed è fatto bene? So che è hackerato insieme, ma non sembra aver avuto problemi fino ad oggi. Non ho aggiornato nulla, non so quale sia l'affare.wp_rewrite in un plugin WordPress
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'));
}
Fondamentalmente ho solo bisogno di essere in grado di prendere l'input da un URL e di generare alcuni dati JSON. – Brad