返信先: usces_is_options() に引数を使いたい

フォーラム テンプレート(テーマ) usces_is_options() に引数を使いたい 返信先: usces_is_options() に引数を使いたい

#74063
nglife
参加者

こんにちは。
usces_is_options()は「商品にオプションが登録されているかどうか」を判断する条件判定用の関数で引数は受け付けていません。
意図するオプションに対して処理を行いたい場合には、少し回りくどいですが下記のようなやり方があります。

<?php if (usces_is_options()) : ?>
<?php 
  while (usces_have_options()) :
  //オプション項目ループ
    if (usces_getItemOptName() === "COLOR") :
 ?>
      オプション「COLOR」の説明
<?php 
    endif;
  endwhile;
 ?>
<?php endif; ?>

usces_getItemOptName()はループ中のオプション名を取得する関数です。商品にオプションがある場合、登録されているオプションの名前を一つ一つチェックしてCOLORがあった場合に説明文を出力します。他オプションでも個別の追加処理をしたい場合にはwhileの中のif分岐を増やせばOKです。

PHPに詳しい方でその他オプション項目毎に分岐やカスタマイズを行いたいという場合には、いっそのこと(商品に登録されている)オプション項目全てを変数として保持しておけば任意の場所でスムーズに処理が行えます。オプション項目取得には、「usces_get_opts(投稿ID, 配列キー指定)」を使用します(返り値:配列)。

例:オプション名「COLOR」「SIZE」で異なる説明文を出力したい場合

<?php 
  //商品に登録されているオプション全て取得
  global $post; //念のため
  $opts = usces_get_opts($post->ID, "name"); //変数名($opts)は他と被らないようなもの
 ?>
<?php if(isset($opts["COLOR"])) : ?>
    オプション「COLOR」の説明
<?php endif; ?>

//他HTMLやらPHPコード

<?php if(isset($opts["SIZE"])): ?>
    オプション「SIZE」の説明
<?php endif; ?>

usces_get_opts()の第2引数にオプション名(name)を指定して登録オプション配列を取得します。処理をしたいオプション名が配列キーに含まれる場合処理をする。といった感じです。コードもすっきりとして見やすいかと思います。

usces_get_opts()で返ってくる配列
$opts[第2引数で指定したキーの持つ値] => array(
“meta_id”=> オプションの登録ID
“name” => オプション名
“means” => inputのタイプ(数字)
“essential” => 必須項目かどうか
“value” => オプションの持つ値(選択肢等)
“sort” => 管理画面内でのオプション登録順
);
の6つの項目からキー指定が可能です。
※第2引数に指定がない場合「sort(=管理画面内でのオプション登録順)」が設定されます
※第2引数に何を設定しようが中身の6つの項目は常に保持されます(色々処理に使えます)

気付けばボリュームが出てしまい申し訳ありませんがカスタマイズをされる他の方にもご参考までに。