Оптимизировать код WordPress класса, чтобы избежать избыточности - PullRequest
0 голосов
/ 28 сентября 2019

Я только что закончил простое обучение созданию плагинов WordPress.Я создал простой плагин, который будет регистрировать некоторые пользовательские шорткоды для использования классов начальной загрузки в редакторе WordPress.Я хочу сделать код плагина более читабельным и менее подверженным избыточному коду.Пока у меня есть эта единственная функция, которая упаковывает все основные классы, которые я использую в своих макетах, но я думаю, что она слишком сложна с точки зрения читабельности.

Есть ли лучший способ написать код?Я подумываю создать несколько файлов для включения, используя require_once или функцию include внутри метода класса, но я не уверен, будет ли это работать, потому что я использую выходной буфер для отображения HTML-кода.,Другое решение, которое я хочу протестировать, - разделить разметку различных столбцов на отдельные методы класса, но я не уверен насчет этого.

Я использую его на тестовой странице следующим образом:

[page_col type="col-6" mobile="hide"]the post or page content[/page_col]

Любое предложение будет оценено.

public function pageCol($atts, $content)
  {
    ob_start();
    $content = strip_tags($content, '<p><span><div><img>');
    $val = shortcode_atts(array(
        'type' => 'col-12',
        'mobile' => 'display'
    ),$atts);

    if( $val['mobile'] === 'hide' ){
      switch($val['type']){
        case 'col-3':
        ?>
          <div class="col-md-3 col-lg-3 d-none d-sm-none d-md-block">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-4':
        ?>
          <div class="col-md-4 col-lg-4 d-none d-sm-none d-md-block">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-6':
        ?>
          <div class="col-md-6 col-lg-6 d-none d-sm-none d-md-block">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-8':
          ?>
          <div class="col-md-8 col-lg-8 d-none d-sm-none d-md-block">
            <?php echo $content; ?>
          </div>
          <?php
          return ob_get_clean();
          break;
        case 'col-12':
          ?>
          <div class="col-md-12 col-lg-12 d-none d-sm-none d-md-block">
            <?php echo $content; ?>
          </div>
          <?php
          return ob_get_clean();
          break;
      }
    }
    else{
      switch($val['type']){
        case 'col-3':
        ?>
// I want to require the file instead of writing the code inside the switch() statement
// example: include 'my-col-layout.php';
          <div class="col-sm-12 col-md-3 col-lg-3">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-4':
        ?>
          <div class="col-sm-12 col-md-4 col-lg-4">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-6':
        ?>
          <div class="col-sm-12 col-md-6 col-lg-6">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-8':
        ?>
          <div class="col-sm-12 col-md-8 col-lg-8">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
        case 'col-12':
        ?>
          <div class="col-sm-12 col-md-12 col-lg-12">
            <?php echo $content; ?>
          </div>
        <?php
          return ob_get_clean();
          break;
      }
    }
  }

1 Ответ

1 голос
/ 28 сентября 2019

То, что у вас есть, в значительной степени излишне.Нет никаких оснований для оператора switch, поскольку ваши col-md и col-lg имеют одинаковое значение.Вы также можете потерять ob_start().

. Я думаю, вам следует также переформатировать, как вы использовали шорткод, поэтому пользователю нужно только ввести номер столбца, например, 6 против col-6, таким образом.Вы можете вставить только это значение в col-md-##.

[page_col type="6" mobile="hide"]the post or page content[/page_col]

public function pageCol($atts, $content) {

    $content = strip_tags($content, '<p><span><div><img>');

    $val = shortcode_atts(array(
        'type' => '12',
        'mobile' => 'display'
    ),$atts);

    $output = '';

    if( $val['mobile'] === 'hide' ){
        $output = '<div class="col-md-' . $val['type'] . ' col-lg-' . $val['type'] . ' d-none d-sm-none d-md-block">' . $content . '</div>';
    } else {
        $output = '<div class="col-sm-12 col-md-' . $val['type'] .' col-lg-' . $val['type'] . '">' . $content . '</div>';
    }

    return $output;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...