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().

Options

Для опций необходимо лишь установить имя в конструкторе и описать функцию 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.',
      )),
    );
  }
}

Post Meta

Укажите имя вашего 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

Для 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.',
      )),
    );
  }
}
⚠️ **GitHub.com Fallback** ⚠️