プラグイン

ACF PROのLinkとページリンクの違いに気付かずにハマった時のお話

2017.09.01

2017.09.02

鎖

Advanced custom fieldsは通常版とPROがありPROは通常版よりもフィールドタイプが多くなっています。その中の一つにLinkがあります。Linkとは通常投稿のlinkボタンと同じ振る舞いをカスタムフィールドに割り当てることができます。地味に便利なフィールドタイプです。

Linkとページリンクは別物です

Advanced custom fieldsにはLinkの他にページリンクというフィールドタイプがあります。ページリンクは通常版にも備わっています。その関係か出力方法を調べるとページリンク関連の情報が上位を占めており、執筆時点では「acf リンク」で検索するとオフィシャルのドキュメントもページリンクが1位です。

私自身Linkを使うのが今回初めてだったので気付かずにページリンクの出力で作業を行っておりました。

ページリンクの出力

<?php $testtest = get_field('testtest'); ?>
<?php if( $testtest ): ?>
<?php foreach((array)$testtest as $value ): ?>
<p>
<a href="<?php echo $value; ?>"><?php echo $value; ?></a>
</p>
<?php endforeach; ?>
<?php endif; ?>

当然ページリンクの出力では、うまく行くはずもありません。
ですがループの出力順はわかったので力技で対処してみることにしました。

アンオフィシャルなLinkの出力

<?php $testtest = get_field('testtest'); ?>
<?php if ($testtest): ?>
<?php
$i = 1;
foreach($testtest as $value){
if($i == 1){
$page_link_tit = $value;
}else{
$page_link_url = $value;
break;
}$i++;
}
?>
<p>
<a href="<?php echo $page_link_url; ?>"><?php echo $page_link_tit; ?></a>
</a>
</p>
<?php endif; ?>

なんとか出力はできましたが、絶対違うと思ってもう一度公式のドキュメントを洗いなおしてみるとありました!!!

Linkの出力

<?php $testtest = get_field('testtest'); ?>
<?php if ($testtest): ?>
<p>
<a href="<?php echo $testtest['url']; ?>"
<?php if ($testtest['target']): ?> target="<?php echo $testtest['target']; ?>"<?php endif; ?>>
<?php echo $testtest['title']; ?>
</a>
</p>
<?php endif; ?>

公式のコード例のままですとターゲット属性を選択しない場合、空になていましたのでif文を追加しています。

ドキュメントはしっかり調べよう!

今回はうっかりミスで思ったより時間がかかってしました。別の方法も思いついたので結果オーライなのですが、しっかりドキュメントを調べていれば時間をロスることはありませんでした。そもそもフィールドタイプ自体勘違いしていましたのでそれ以前の問題だったのですが・・・・・・・うっかりミス気をつけます!

WEBSITE DESIGN REQUEST

ホームページ制作依頼について

W・D・Sでホームページ制作をご希望の方はお気軽にご相談ください。
制作内容、ご予算、納期をお知らせいただくとスムーズです。

ホームページ制作を相談する