🕌

カスタムフィールドのテキストの一部にリンクをつける(CFSの場合)

2024/01/13に公開

カスタムフィールドで出力した文章内の一部テキストにリンクをつけるという要望があったので、メモとして残します
CustomFeildSuiteで実装しましたが、他のACF等でも出来るとは思います

設定画面
設定画面

設定イメージ
設定イメージ

php

<?php
//文章
$contentsTextbox = CFS()->get('contents_textbox', 99);
//一部文字にリンクをつけるループ
$contentsTargets = CFS()->get('contents_targets', 99);
?>
<p class="contents__text">
  <?php
  if ($contentsTargets) {
    foreach ($contentsTargets as $targets) {
      $targetsItem = $targets['contents_target'];

      if ($targetsItem) {
        foreach ($targetsItem as $target) {
          $targetText = $target['contents_target-text'];
          $targetUrl = $target['contents_target-url'];
          $targetBlankStr = 'target="_blank" rel="noopener noreferrer"';

          if ($targetText && $targetUrl) {
            $targetBlank = $target['contents_target-blank'];
              if ($targetBlank) {
                $preConvertText = str_replace($targetText, '<a href="' . esc_url($targetUrl) . '" ' . $targetBlankStr . '>' . $targetText . '</a>', $contentsATextbox);
              } else {
                $preConvertText = str_replace($targetText, '<a href="' . esc_url($targetUrl) . '">' . $targetText . '</a>', $contentsTextbox);
              }
	      $contentsTextbox = $preConvertText;
            }
          }
        }
      }
      echo $preConvertText;
    }
  ?>
</p>

Discussion