Advanced Custom Fieldsにテーブルのフィールドタイプを追加できるプラグイン

Filed under: wordpressプラグイン — kdcs @ 25年8月21日 木曜日

プラグインは「Advanced Custom Fields: Table Field」

テンプレートへのテーブル出力方法

ループ出力の中で使用

最小限の構成(th・td)での出力

<?php		
$table = get_field( 'your_table_field_name' );
if ( ! empty ( $table ) ) {
echo '<table>';
  echo '<tbody>';
    foreach ( $table['body'] as $tr ) {
    echo '<tr>';
      foreach ( $tr as $td ) {
      echo '<td>';
        echo $td['c'];
        echo '</td>';
      }
      echo '</tr>';
    }
    echo '</tbody>';
  echo '</table>';
}
?>

(続きを読む…)

Advanced Custom Fieldsで数字を含む文字列の数字だけ半角にしてカンマを付ける

Filed under: php,wordpress,wordpressプラグイン — kdcs @ 25年8月14日 木曜日

料金などの金額をacfで出力させるとき、単純に数字だけにできない場合がある。
具体的には、金額に幅があり~を付けなければならない状況。

例:acfのフィールド名は’room_price’

<?php
$price_raw = post_custom('room_price'); // 例: "12345~5678円"
$price_raw = mb_convert_kana($price_raw, 'n'); // 全角数字を半角に変換(例: "12345~5678円")

// 数字部分だけをカンマ付きに整形
$formatted_price = preg_replace_callback('/\d+/', function($matches) {
    return number_format($matches[0]);
}, $price_raw);

echo $formatted_price; // 例: "12,345~5,678円"
?>

これをテンプレートで使うと

<?php
$price_raw = post_custom('room_price'); // 例: "12345~5678円"
$price_raw = mb_convert_kana($price_raw, 'n'); // 全角数字を半角に変換(例: "12345~5678円")

// 数字部分だけをカンマ付きに整形
$formatted_price = preg_replace_callback('/\d+/', function($matches) {
    return number_format($matches[0]);
}, $price_raw);
?>
<table>
<tr>
<th>料金</th><td><?php echo $formatted_price; ?>円(税込)</td>
</tr>
</table>

advanced custom fieldsでチェックボックスの値を利用した条件分岐

Filed under: wordpressプラグイン — kdcs @ 25年7月11日 金曜日

advanced custom fieldsでチェックボックスの値を利用して出力するhtmlを変える(すべて出力する)方法。

copilotに尋ねた結果

<?php
$selected = get_field('checkbox_field_name');
if (in_array('option1', $selected)) {
  echo '<p>選択肢1が選ばれました</p>';
}
if (in_array('option2', $selected)) {
  echo '<p>選択肢2が選ばれました</p>';
}
?>

実際のコード
フィールドは「room_tobacco」で選択肢として、禁煙はno、喫煙はyes

<?php $selected = get_field('room_tobacco');
if (in_array('no', $selected)) {
echo '<span class="no-smoking"><i class="fa iconx-no-smoking"></i> 禁煙</span>';
  }
if (in_array('yes', $selected)) {
echo '<span class="smoking"><i class="fa iconx-yes-smoking"></i> 喫煙</span>';
  }
?>

こうすると、チェックボックス未入力の場合に$selectedの値がnullになり、「in_array(): Argument #2 ($haystack) must be of type array, null given」というエラーになる。

解決策1【nullチェックを追加する】-WordPressデバッグモードでエラー出ず
is_array()で配列かどうかを確認してからin_array()を使う

<?php $selected = get_field('room_tobacco');
if (is_array($selected) && in_array('no', $selected)) {
    echo '<span class="no-smoking"><i class="fa iconx-no-smoking"></i> 禁煙</span>';
  }
if (is_array($selected) && in_array('yes', $selected)) {
    echo '<span class="smoking"><i class="fa iconx-yes-smoking"></i> 喫煙</span>';
  }
?>

解決策2【(array)を入れる】
in_arrayの第2引数$selectedの前に(array)を入れる

<?php $selected = get_field('room_tobacco');
if (in_array('no', (array)$selected)) {
    echo '<span class="no-smoking"><i class="fa iconx-no-smoking"></i> 禁煙</span>';
  }
if (in_array('yes', (array)$selected)) {
    echo '<span class="smoking"><i class="fa iconx-yes-smoking"></i> 喫煙</span>';
  }
?>

解決策3【elseを入れて値が無い場合の処理をさせる】

<?php $selected = get_field('room_tobacco');
if (in_array('no', $selected)) {
    echo '<span class="no-smoking"><i class="fa iconx-no-smoking"></i> 禁煙</span>';
  }
if (in_array('yes', $selected)) {
    echo '<span class="smoking"><i class="fa iconx-yes-smoking"></i> 喫煙</span>';
  }
else {
    echo '';
  }
?>

Contact Form7のcssとjavascriptの読み込みを制御する

Filed under: contactform7,functions.php,wordpressプラグイン — kdcs @ 24年9月13日 金曜日

確認時のContact Form7のバージョンは5.9.8
プラグインが吐き出すcssについては以前からfunctions.phpの「wp_head関連 wp_headでプラグインのcssを読み込ませない」で対応していたが、最新バージョンのContactForm7ではwp_footerに出力されるjavascriptが多くなっている。
全ページに出力されるため、必要のないページには読み込ませない方法。(公式サイトより)

functions.php

// contactform7関連 wp_headでcss、wp_footerでjavascriptを読み込ませない-------------------
// ※cssはwp_head関連の「cssを読み込ませない」で対応中------------------------------------
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );

footer.php
お問い合わせ(contact)来店予約(reservation)の場合

<?php if (is_page('reservation')||is_page('contact')): ?>
<?php
    if ( function_exists( 'wpcf7_enqueue_scripts' ) ) {
        wpcf7_enqueue_scripts();
    }
    if ( function_exists( 'wpcf7_enqueue_styles' ) ) {
        wpcf7_enqueue_styles();
    }
?>
<?php endif; ?>

基本的にcssはwp_head関連の「cssを読み込ませない」で対応中なのでfooter.phpはスクリプトの記述だけでよい

ダッシュボードに表示されるプラグイン情報を非表示にする

Filed under: functions.php,wordpressプラグイン — kdcs @ 24年9月12日 木曜日

Smash Balloon Social Photo Feedを6.5.0にしたらダッシュボードにプラグインの情報が表示されるようになった。
編集者権限や投稿者権限でも表示されてしまい、管理者以外プラグインの操作ができないようにしているので、プラグインへのリンクをクリックしても「アクセスする権限がありません」となる。

この表示は邪魔なので管理者以外は非表示にする方法
functions.php

//ダッシュボードウィジェット「Smash Balloon Social Photo Feed」非表示 --------------------
function sb_remove_dashboard_widgets() {
  if (!current_user_can('administrator')) {
     remove_meta_box('sb_dashboard_widget', 'dashboard', 'normal');
    }
}
add_action('wp_dashboard_setup', 'sb_remove_dashboard_widgets');

この記述でダッシュボードの表示オプションにも「Smash Balloon」は出なくなる

サイト内検索

カテゴリー

最近の投稿

↑上に戻る