このシリーズもこのままいくと、part20くらいまでいきそうな予感がしますが…進めます。今回はGoogleしごと検索有効化の機能が機能するように調整をしてみます。Googleしごと検索の有効化が「する」になっている案件のみ表示させてみます。
Googleしごと検索有効化「する」「しない」を使う
前回までの状態では、Googleしごと検索の有効化を「する」「しない」のステータスに関わらず、すべての案件がすべて出力された状態になっていました。
これを、Googleしごと検索の有効化が「する」になっている案件のみ表示させてみたいと思います。
カスタムフィールドの「Googleしごと検索の有効化」を使う
アドバンスドカスタムフィールドで作成した「Googleしごと検索の有効化」ラベルが使えそうかと思います。名前は「activation」として設定していました。こちらを使ってみます。
条件分岐(if~)で振り分ける
この場合はGoogleしごと検索の有効化を「する」「しない」で分ければいけそうな気がしますので、if文で条件分岐してみます。
前回までの状態は下記のようになっていました。
<?php while ( have_posts() ) : ?>
<?php the_post(); ?>
<!-- 表示される部分 -->
<?php endwhile; ?>
こちらを、下記のような条件分岐にしてみます。
<?php while ( have_posts() ) : ?>
<?php the_post(); ?>
<?php
$now_status = get_field('activation');
echo $now_status;
if ($now_status == '募集中') { ?>
<!-- 表示部分(省略) -->
<?php } else { ?>
<p>非公開部分</p>
<?php } ?>
<?php endwhile; ?>
これで、条件分岐できるはず…です。
結果がすべて「Array」?になってしまいました…。
チェックボックスのValueが配列?
前にも書いた記憶があるのですが、チェックボックスのValueをそのまま返そうとすると、結果はArray(配列)が返ってきてしまいます。
ですので、Arrayからチェックボックスの値を拾って→「Googleしごと検索の有効化」に「する」の値が入っている場合のみ、公開されているページに出力されるように条件分岐してみます。
get_field_objectに変更してforeachでループさせてみます。※結果が分かるように変数をechoしています。
$now_status = get_field_object('activation');
$items = $now_status['value'];
foreach( $items as $item ):
echo $item;
endforeach;
これで、「Googleしごと検索の有効化」に「する」の値が入っている場合のみ、公開されているページの一覧画面に表示されるはず…です。
表示された…かと思いましたが、表示されず。「yes」?
配列の値が取得されている
そういえば…カスタムフィールドの選択肢で「yes:する」としていました。つまり、結果として「値」の方を取得していることになります。
方法を、変えてみます。
yesの場合に一覧に表示させる
そうなると、「変数の結果がyesの場合」に表示させればよいということになりそうですので、条件分岐を変更してみます。
<?php
$now_status = get_field_object('activation');
$items = $now_status['value'];
foreach( $items as $item ):
endforeach;
if ($item == 'yes') { ?>
<div class="ListContainer">
<div class="ListLeft">
<img src="<?php the_field('mainImage'); ?>"/>
</div>
<div class="ListRight">
<div class="ListTitle">
<a href="<?php the_permalink(); ?>"><?php the_field('jobTitle'); ?></a>
<a class="detailButton" href="<?php the_permalink(); ?>">詳細はこちら</a>
</div>
<div class="ListCompName"><?php the_field('companyName'); ?></div>
<?php the_field('siteUrl'); ?>
<?php the_field('postalCode'); ?>
<?php the_field('addressRegion'); ?>
<?php the_field('addressLocality'); ?>
<?php the_field('streetAddress'); ?>
<?php the_field('setValue'); ?>
<?php the_field('basicValue'); ?>
<?php the_field('employmentType'); ?>
<?php the_field('validThrough'); ?>
</div>
</div>
<?php } else { ?>
<p>- 非公開 -</p>
<?php } ?>
<?php endwhile; ?>
表示結果がおかしい?
公開「する」になっているページのみ、公開されました!
[rml_read_more]
・・・ように見えましたが、表示結果がおかしなことになっています。「する」になっていないデータまで表示されてしまっています・・・。
変数の中がどうなっているのか、出力して見てみます。
<?php
$now_status = get_field_object('activation');
$items = $now_status['value'];
foreach( $items as $item ):
endforeach;
echo 'now_status:'.$now_status;
echo 'items:'.$item;
if ($item == 'yes') { ?>
<div class="ListContainer">
<div class="ListLeft">
<img src="<?php the_field('mainImage'); ?>"/>
</div>
<div class="ListRight">
<div class="ListTitle">
<a href="<?php the_permalink(); ?>"><?php the_field('jobTitle'); ?></a>
<a class="detailButton" href="<?php the_permalink(); ?>">詳細はこちら</a>
</div>
<div class="ListCompName"><?php the_field('companyName'); ?></div>
<?php the_field('siteUrl'); ?>
<?php the_field('postalCode'); ?>
<?php the_field('addressRegion'); ?>
<?php the_field('addressLocality'); ?>
<?php the_field('streetAddress'); ?>
<?php the_field('setValue'); ?>
<?php the_field('basicValue'); ?>
<?php the_field('employmentType'); ?>
<?php the_field('validThrough'); ?>
</div>
</div>
<?php } else { ?>
<p>- 非公開 -</p>
<?php } ?>
<?php endwhile; ?>
1回目のループには中身が空白で、2回目以降のループには、全て「yes」が入ってしまっています。
これだとGoogleしごと検索の有効化が「する」になっている案件以外も表示されてしまいますので、調整をしてみます。
まとめ
長くなりましたので、こちらのループ調整は次回挑戦してみたいと思います。
まだまだ続きそうな予感ですが、次は、開いた先の詳細ページの方も作成していきたいと思います。
ご参考ください😃