Abstract DataComponents - korobochkin/wp-kit GitHub Wiki
Абрактные классы предназначены для наследования любых ваших собственных компонентов и классов. С помощью них легко сконфигурировать специфичные для каждого объекта методы и свойства.
Основная идея этих классов в том, что они «чистые» по умолчанию и не имеют никаких заранее заданных атрибутов. Благодаря этому вам не прийдется сбрасывать что-либо.
🤘⚒ Кроме абстрактных классов вы можете самостоятельно спроектировать необходимый компонент используя Traits. Вы можете найти Traits и более низкоуровневые абстрактные классы и интерфейсы для DataComponents в
source/DataComponents
.
Dummy Components
Если вы не хотите описывать методыbuildConstraint()
или создаете компоненты на лету, то лучше использовать следующие классы. С их помощью можно задавать Constraints динамически или обойтись без них вовсе.
Korobochkin\WPKit\Options\Option
Korobochkin\WPKit\PostMeta\PostMeta
Korobochkin\WPKit\Transients\Transient
Или используйте DummyBuildConstraintTrait, чтобы создать пустую
buildConstraint()
.
Для опций необходимо лишь установить имя в конструкторе и описать функцию buildConstraint()
. Также вы можете указать autoload. По умолчанию установлено true
, что подходит для большинства случаев.
namespace YourName\YourProduct\Options;
use Korobochkin\WPKit\Options\AbstractOption;
class YourOption extends AbstractOption {
public function __constructor() {
$this
->setName('your_product_prefix_your_option')
// Autoload is true by default
// and calling with true is unnecessary
// but you can set false here.
->setAutoload(true);
}
public function buildConstraint() {
return array(
new Constraints\NotNull(),
new Constraints\Length(array(
'min' => 2,
'max' => 10,
'minMessage' => 'Your custom message for min error.',
'maxMessage' => 'Your custom message for max error.',
)),
);
}
}
Укажите имя вашего PostMeta и все! Параметр видимости по умолчанию false
, что необходимо для большинства случаев. Но вы также можете сделать ваш PostMeta видимым задав true
. Видимость влияет на то, будет ли видно содержимое Post Meta в специальном Meta Box от WordPress. Скрытые Post Meta автоматически получают символ _
перед названием, что позволяет их скрыть в WordPress.
namespace YourName\YourProduct\PostMeta;
use Korobochkin\WPKit\PostMeta\AbstractPostMeta;
class YourPostMeta extends AbstractPostMeta {
public function __constructor() {
$this
->setName('your_product_prefix_your_post_meta')
->setVisibility(true);
}
public function buildConstraint() {
return array(
new Constraints\NotNull(),
new Constraints\Length(array(
'min' => 2,
'max' => 10,
'minMessage' => 'Your custom message for min error.',
'maxMessage' => 'Your custom message for max error.',
)),
);
}
}
Для Transients вы можете дополнительно задавать время экспирации в секундах.
namespace YourName\YourProduct\Transients;
use Korobochkin\WPKit\Transients\AbstractTransient;
class YourTransient extends AbstractTransient {
public function __constructor() {
$this
->setName('your_product_prefix_your_transient')
// Constants like HOUR_IN_SECONDS defined by WordPress core
// in wp-includes/default-constants.php.
->setExpiration(HOUR_IN_SECONDS);
}
public function buildConstraint() {
return array(
new Constraints\NotNull(),
new Constraints\Length(array(
'min' => 2,
'max' => 10,
'minMessage' => 'Your custom message for min error.',
'maxMessage' => 'Your custom message for max error.',
)),
);
}
}