はなゐろぐ

Tag: Wordpress

.envで変数を使う

2019.12.03 11:12

Wordmove向けにローカルと本番環境両方のDB情報を、Wordpress向けにその環境のDB情報を記載したかったので、下記のようにしました。本番環境の.envでは、${LOCAL_DB_XXXX}${PROD_DB_XXXX}に書き換えます。

LOCAL_DB_NAME=
LOCAL_DB_USER=
LOCAL_DB_PASSWORD=
LOCAL_DB_HOST=
PROD_DB_NAME=
PROD_DB_USER=
PROD_DB_PASSWORD=
PROD_DB_HOST=

# DB
DB_NAME=${LOCAL_DB_NAME}
DB_USER=${LOCAL_DB_USER}
DB_PASSWORD=${LOCAL_DB_PASSWORD}
DB_HOST=${LOCAL_DB_HOST}

Wordpressのアップロード画像サイズを変更

2019.12.02 10:12

追加

リサイズのパターンを追加する。既存のキーを指定すると上書きする。

// widthを指定した値に合わせて縦横比を維持したままリサイズする
add_image_size('thumbnail', 300);

// 短辺を300pxに合わせてリサイズし、はみ出した部分はトリミングする
add_image_size('thumbnail_square', 300, 300, true);

参照: 関数リファレンス/add image size - WordPress Codex 日本語版

デフォルトのパターンを削除

不要なリサイズを行わないようにする。

/**
 * デフォルトのリサイズを停止
 * @param  array $sizes サイズ名が格納された配列
 * @return array
 */
function remove_image_sizes($sizes) {
    unset($sizes['thumbnail']);
    unset($sizes['medium']);
    unset($sizes['large']);

    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_image_sizes');

アイキャッチ画像デフォルトサイズを指定

the_post_thumbnail()で取得できるデフォルトのサイズを指定する。

// アイキャッチ画像のデフォルトサイズを指定
set_post_thumbnail_size(300);

参照: 関数リファレンス/set post thumbnail size - WordPress Codex 日本語版

Wordpressカスタムフィールドに入力した値でクエリを絞り込んだりソートしたりする

2019.10.31 10:10

日付

開始日(schedule_start)と終了日(schedule_end)の間に今日($today)が入っていれば記事を取得する。ちなみに、今回はサブフィールドをキーに指定するので、フィールド(schedule)とサブフィールド(start)をアンスコでつないで「schedule_start」にします。

$today = date('Ymd');
$query = new WP_Query([
  // 中略
  'meta_query' => array(
    'relation' => 'AND',
    [
      'key' => 'schedule_start',
      'compare' => '<=',
      'value' => $today,
      'type' => 'DATE'
    ],
    [
      'key' => 'schedule_end',
      'compare' => '>=',
      'value' => $today,
      'type' => 'DATE'
    ]
  )
]);

数値

金額(price)順にソートして取得する。カスタムフィールドをキーにソートするには'orderby' => 'meta_value'を使います。しかしこのままだと値が文字列として扱われ期待通りにソートされないので、'orderby' => 'meta_value_num'にします。

$query = new WP_Query([
  // 中略
  'orderby' => 'meta_value_num', // _num をつけることで数値としてソートされる
  'meta_key' => 'price',
  'order' => 'ASC',
  'meta_query' => [
    'relation' => 'AND',
    [
      'key' => 'price',
      'compare' => 'EXISTS',
    ]
  ]
]);

Advanced Custom FieldのTimepickerを5分刻みにカスタマイズする

2019.10.28 13:10

add_filter('acf/input/admin_footer', 'acf_input_timepicker');
function acf_input_timepicker(){
  ?>
  <script type="text/javascript">
  (function($){
    acf.add_filter('time_picker_args', function(args, $field){
      args['stepMinute'] = 5;

      return args;
    });
  })(jQuery);
  </script>
  <?php
}

Adding custom javascript to date and time picker fields - ACF Support
ACF | acf/input/admin_footer

リンク先ではDatepickerのカスタマイズも書かれていて、例えば選択可能な範囲を指定するにはこんな感じ。

add_filter('acf/input/admin_footer', 'acf_input_datepicker');
function acf_input_datepicker(){
  ?>
  <script type="text/javascript">
  (function($){
    acf.add_filter('date_picker_args', function( args, $field ){
      args['minDate'] = 0; // 今日以降
      args['maxDate'] = '+1m'; // 1ヶ月以内

      return args;
    });
  })(jQuery);
  </script>
  <?php
}

他にもいろいろできそう。

1