Создание метабоксов WordPress с использованием фреймворка плагинов Herbert WordPress

я использую Герберт создать модуль для WordPress. Я пытаюсь сделать пользовательский мета-блок для конкретной страницы, поэтому я сделал следующий класс

<?php

namespace Testing\MetaBoxes;

use Testing\Helper;

class ExtendMetaBoxes {

const WORDPRESS_CONTEXT = ['normal' => 'normal', 'advanced' => 'advanced', 'side' => 'side'];
const WORDPRESS_PRIORITY = ['high' => 'high', 'default' => 'default', 'low' => 'low'];

/**
* Metabox id.
*
* @var string
*/
private $id;

/**
* Metabox title.
*
* @var string
*/
private $title;

/**
* Metabox name.
*
* @var string
*/
protected $name;

/**
* Metabox nonce.
*
* @var string
*/
protected $nonce;

/**
* Metabox page.
*
* @var string
*/
private $page;

/**
* Metabox context.
*
* Allowed values from wordpress: "normal", "advanced" and "side"* @var string
*/
private $context;

/**
* Metabox priority.
*
* Allowed values from wordpress: "high", "default" and "low"* @var string
*/
private $priority;

/**
* Metabox callback_args.
*
* @var string
*/
private $callback_args;

/**
* Metabox view.
*
* @var herbert object
*/
private $view;

/**
*  Constructs the metabox.
*/
public function __construct()
{
$this->id = 'properties-integretation-system';
$this->title = Helper::get('pluginName');
$this->page = 'property';
$this->name = 'api_systems';
$this->nonce = 'api_systems_nonce';
$this->context = WORDPRESS_CONTEXT['side'];
$this->priority = WORDPRESS_PRIORITY['low'];
$this->view = herbert('twig');
add_action( 'add_meta_boxes',  [$this, 'registerMetabox'] );
}

/**
* Adding meta box to the given page
*/
public function registerMetabox()
{
add_meta_box( $this->id, $this->title, [$this, 'metaBoxTemplate'], $this->page, $this->context, $this->priority );
}

/**
* Prints out the metabox template.
*
* @param $post
*/
public function metaBoxTemplate()
{
echo $this->view->render('@Testing/metaboxes/api.twig');
}
}

Класс загружается автоматически, поэтому я точно знаю, что класс существует в бэк-офисе. Согласно этому ссылка на сайт способ, которым я сделал мой класс, является правильным, но проблема в том, что не вызывает metaBoxTemplate функция. Если бы я изменил способ, которым я называю это $this->metaBoxTemplate(), он загружает шаблон, но на неправильной позиции на странице. Кто-нибудь знает, почему [$this, 'metaBoxTemplate'] не выполняется, но [$this, 'registerMetabox'] выполняется нормально, и как я могу решить мою проблему? Спасибо

1

Решение

Хорошо, я нашел проблему. Проблема возникла из-за того, как я вызывал константный массив, поэтому я исправил это так:

$this->context = self::WORDPRESS_CONTEXT['side'];
$this->priority = self::WORDPRESS_PRIORITY['low'];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]