Permitir HTML en opciones del panel de administración

  • Autor Autor Fabián Rodríguez
  • Fecha de inicio Fecha de inicio
Fabián Rodríguez

Fabián Rodríguez

Lambda
Programador
Verificación en dos pasos activada
Hola Betas,
Estoy realizando un panel de administración para la gestión de publicidad de un tema para Wordpress de un cliente. Le he puesto cajas de texto (inputs y textarea) pero al parecer Wordpress limita los caracteres y no deja poner HTML del todo, por lo que si por ejemplo coloco el código de Adsense, este insertar caracteres especiales como "\" y no deja visualizar el banner de publicidad.

¿Alguna idea?
Para que sepan más o menos como estoy haciendo el panel de administración es de esta manera:


Insertar CODE, HTML o PHP:
<?php
class ControlPanel {

	var $default_settings = array(
		'display_ads' => 1,
		'pub1' => '',
		'pub2' => '',
		'pub3' => '',
		'pub4' => '',
		'pub5' => '',
		'pub6' => '',
		'logo_path' => '/images/logo.png',
	);

	function __construct()
	{
		if (!is_array(get_option('jmdaily'))) add_option('jmdaily', $this->default_settings);

		$this->options = get_option('jmdaily');

		add_action('admin_menu', array(&$this, 'admin_menu'));
		add_action('admin_head', array(&$this, 'admin_head'));
	}

	function admin_menu()
	{
		add_theme_page('Panel de opciones del theme', 'Comarca Theme', 'edit_themes', "jmdaily", array(&$this, 'optionsmenu'));
	}

	function admin_head()
	{
		echo '<link rel="stylesheet" href="'.get_bloginfo('template_url').'/controlpanel.css" type="text/css" media="screen" />';
	}

	function optionsmenu()
	{
		if ($_POST['ss_action'] == 'save') {
			$this->options["display_ads"] = isset($_POST['cp_displayads']) ? 1 : 0;
			$this->options["pub1"] = $_POST['pub1'];
			$this->options["pub2"] = $_POST['pub2'];
			$this->options["pub3"] = $_POST['pub3'];
			$this->options["pub4"] = $_POST['pub4'];
			$this->options["pub5"] = $_POST['pub5'];
			$this->options["pub6"] = $_POST['pub6'];
			$this->options["logo_path"] = $_POST['cp_logopath'];
			update_option('jmdaily', $this->options);
			echo '<div class="updated fade" id="message" style="background-color: rgb(255, 251, 204); width: 300px; margin-left: 20px"><p>Settings <strong>saved</strong>.</p></div>';
		}

		echo '<h2>Comarca Theme Settings</h2>';
		echo '<form action="" method="POST" class="themeform">';
		echo '<input type="hidden" id="ss_action" name="ss_action" value="save">';
		echo '<hr/>';
		echo "<h4>Publicidad p&aacute;gina princial (index)</h4>";
		echo '<input type="checkbox" name="cp_displayads" id="cp_displayads"'.($this->options["display_ads"] == 1 ? ' checked' : '').' /><label style="margin-left: 5px;" for="cp_displayads">Mostrar anuncios</label><br />';
  
		echo 'Banner #1 header <input class="widefat" style="width: 165px;"  name="pub1" id="cp_pub1"  type="text "value="'.$this->options["pub1"].'"></textarea><br />';
		echo 'Banner #2 sidebar <input class="widefat" style="width: 165px;" name="pub2" id="cp_pub2" type="text" value="'.$this->options["pub2"].'" /><br />';
		echo 'Banner #3 sidebar <input class="widefat" style="width: 165px;" name="pub3" id="cp_pub3" type="text" value="'.$this->options["pub3"].'" /><br />';
		echo 'Banner #4 sidebar <input class="widefat" style="width: 165px;" name="pub4" id="cp_pub4"  type="text" value="'.$this->options["pub4"].'" /><br />';
		echo 'Banner #5 sidebar <input class="widefat" style="width: 165px;" name="pub5" id="cp_pub5" type="text" value="'.$this->options["pub5"].'" /><br />';
		echo 'Banner #6 sidebar <input class="widefat" style="width: 165px;" name="pub6" id="cp_pub6" type="text" value="'.$this->options["pub6"].'" /><br />';
		echo '<p class="submit"><input type="submit" value="Save Changes" name="cp_save"/></p>';
		echo '</form>';
	}
	
}
?>

Enlace eliminado
 
Última edición:
Fabián, es raro, pero hay temas que soportan código html, el que estoy usando ahora mismo lo soporta, por si quieres echarle un vistazo, se llama Mysthique, hay otros que también lo permiten, no recuerdo nombres ahora mismo, incluso hay un plugin para meter código adsense...
 
¿Y si cuando imprimes el HTML desde la base de datos reemplazas los caracteres "\"?

Un saludo.
 
Me respondo a mi mismo pero quedo con la duda. Tengo esta función que me permite caracteres especiales: wp_specialchars, pero de esta forma si por ejemplo coloco un código de Adsense se mostrará el código como tal y no el anuncio que es lo que necesito.

Tiene alguna forma especial de hacer esto que necesito? 😀
 

Temas similares

Atrás
Arriba