Ok, tengo este código que he estado usando para escupir noticias a una aplicación mía. Funcionó hasta hoy. He recortado toda la lógica en el siguiente código para hacerlo más simple. Pero debería "TRABAJAR" ¿Puede alguien ayudarme a arreglar este código donde funciona, y se hace bien? Sé que está pirateado, pero no pareció tener ningún problema hasta hoy. No he actualizado nada, no sé cuál es el trato.wp_rewrite en un complemento de 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'));
}
Básicamente, solo necesito poder tomar la entrada de una URL y generar algunos datos JSON. – Brad