Estoy creando un tema personalizado y quiero crear una clase auxiliar para manejar la creación de metaboxes en el panel de administración. He declarado mi clase así:
namespace ci\wp;
Metaboxes::init();
class Metaboxes {
private static $instance;
private static $post;
private static $metaboxesPath = TEMPLATEPATH . "/config/metaboxes/";
static function init() {
global $post;
self::$post = &$post;
add_action( 'add_meta_boxes', [ __CLASS__, 'addMetabox' ], 10, 5 );
}
// ADD METABOX
static function addMetabox($id, $title, $post_type, $position, $priority) {
if (file_exists(self::$metaboxesPath.$id.'.php')) {
require_once(self::$metaboxesPath.$id.'.php');
add_meta_box($id, $title, 'do_'.$id, $post_type, $position, $priority);
}
}
[...]
El problema es que cuando quiero usar el método addMetabox, al escribir \ci\wp\Metaboxes::addMetabox('front_page_slide_settings', 'Slide settings', 'page', 'normal', 'high');
, aparece el siguiente error:
Fatal error: Uncaught Error: Call to undefined function ci\wp\add_meta_box() in [...]
Probé varios métodos diferentes de usar add_action dentro de la clase, pero no importa si es una clase estática, singleton con add_action se ejecuta en la instanciación o una clase normal con add_action en el constructor, siempre da como resultado dicho error.
¿Hay alguna manera de hacerlo funcionar? ¿Qué estoy haciendo mal?