WordPressからbootstrapのクラス名をグループに分けて取得したい

WordPressからbootstrapのクラス名をグループに分けて取得したい



bootstrapをベースにWordPressのテーマを作成しています。

そんな折、bootstrap.cssファイルから、クラス名をまとめて取得出来ないものかと思うように至りました。

SCSSファイルから直接JSONファイルを取得するような操作は出来ないかと考えましたが、JSONをSCSSに変換するというのはあるみたいですが。

SCSSの関数を使って生成されるフォーマットは当然ながらCSSであり、その他のフォーマットを生成することは難しいようです。

そこで、

bootstrapのSCSSファイル内の必要なスタイル箇所を、例えば_text.scssファイルであれば、

/* text(⇐開始コメント) */
.text-justify  { text-align: justify !important; }
.text-nowrap   { white-space: nowrap !important; }
.text-truncate { @include text-truncate; }

// Responsive alignment

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .text#{$infix}-left   { text-align: left !important; }
    .text#{$infix}-right  { text-align: right !important; }
    .text#{$infix}-center { text-align: center !important; }
  }
}

// Transformation

.text-lowercase  { text-transform: lowercase !important; }
.text-uppercase  { text-transform: uppercase !important; }
.text-capitalize { text-transform: capitalize !important; }

// Weight and italics

.font-weight-light  { font-weight: $font-weight-light !important; }
.font-weight-normal { font-weight: $font-weight-normal !important; }
.font-weight-bold   { font-weight: $font-weight-bold !important; }
.font-italic        { font-style: italic !important; }

/* /text(⇐終了コメント) */

のように開始点と終了点にコメントを挿入します。

これでコンパイルすると、

/* text */
.text-justify {
  text-align: justify !important;
}

.text-nowrap {
  white-space: nowrap !important;
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.text-left {
  text-align: left !important;
}

.text-right {
  text-align: right !important;
}

.text-center {
  text-align: center !important;
}

@media (min-width: 576px) {
  .text-sm-left {
    text-align: left !important;
  }
  .text-sm-right {
    text-align: right !important;
  }
  .text-sm-center {
    text-align: center !important;
  }
}

@media (min-width: 992px) {
  .text-md-left {
    text-align: left !important;
  }
  .text-md-right {
    text-align: right !important;
  }
  .text-md-center {
    text-align: center !important;
  }
}

@media (min-width: 1300px) {
  .text-lg-left {
    text-align: left !important;
  }
  .text-lg-right {
    text-align: right !important;
  }
  .text-lg-center {
    text-align: center !important;
  }
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-uppercase {
  text-transform: uppercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

.font-weight-light {
  font-weight: 300 !important;
}

.font-weight-normal {
  font-weight: 400 !important;
}

.font-weight-bold {
  font-weight: 700 !important;
}

.font-italic {
  font-style: italic !important;
}

/* /text */

のようにCSSが生成されます。

これで後はWordPressの方でこのファイルを読み込んで、preg_match_allでグループ名、クラス名を取得して配列に格納すれば出来そうです。

⇒試してみたら、出来ました。

テーマの方に読み込む際には更にMinifyするのでこれらのコメントも削除されます。

今日はここまで

関連する記事



こちらはいかが?


コメントを残す