Estoy usando namespaces.PHP Namespace 5.3 y WordPress Widget
intento crear un widget de WordPress (http://codex.wordpress.org/Widgets_API)
Con espacios de nombres A continuación se presenta un error porque los argumentos no se pueden pasar (y sin espacios de nombres es obvio que funciona como habitual)
namespace a\b\c;
class whatever extends \WP_Widget {
function whatever() {
parent::WP_Widget('name1', 'name2');
}
// .. other functions left out
}
add_action('widgets_init',
create_function('', 'return register_widget("a\b\c\whatever");'));
uhm ... ¿cuál es la sintaxis correcta para 'parent :: WP_Widget' utilizando espacios de nombres?
(el mensaje de error completo es:
Warning: Missing argument 2 for WP_Widget::__construct(), called in
C:\xampp\htdocs\wp2\wp-includes\widgets.php on line 324 and defined in
C:\xampp\htdocs\wp2\wp-includes\widgets.php on line 93
)
Y el depurador no muestra nada ha pasado:
Variables in local scope (#14)
$control_options = Undefined
$id_base = boolean false
$name = Undefined
$widget_options = Undefined
(sólo el $ nombre es requerido)
mensaje exacto aquí. Al mirar el código, no parece que haya nada malo. Además, ¿por qué usas parent y no solo $ this-> WP_Widget? Y, por último, ¿WP_Widget es un constructor de la clase WP_Widget? ¿Por qué la función tiene el mismo nombre que la clase? Si es un constructor, entonces mejor use __construct() – Dmitri
no: existe, la fábrica de widgets es parte de WordPress desde 2.8: si hace clic en Eclipse en WP_Widget obtendrá la definición en la que está ... http: // core. svn.wordpress.org/trunk/wp-includes/widgets DEBE ser sobrescrito y no por _construct, vea el código fuente (no puedo ayudar, no lo escribí) – edelwater
@dmitri: both parent :: WP_Widget y $ this-> WP_Widget deliver el mismo error, ambas variantes se usan en la web. WP_Widget es la función que debe sobrescribirse según el CODEX. – edelwater