🤔 무엇을
Sage9으로 블로그를 옮기면서 Dev 아카이브 페이지에서 각 포스트의 terms 값중 terms의 ACF 필드로 추가된 이미지를 가져와야했다. 카테고리 이미지를 저장한 필드인데
$myterms = wp_get_post_terms(get_the_ID(), get_post_type().'_category');
@foreach ($myterms as $term) {
@php
$iconArray = get_field('icon', get_post_type().'_category_'.$term->term_id);
// laravel blade error
// 에러 문구
// Uncaught Exception: Cannot access offset of type string on string...
Code language: PHP (php)
위처럼 Uncaught Exception: Cannot access offset of type string on string
라는 문구와 함께 제대로 동작하지 않는 것이다.
그냥 PHP를 사용하면서는 위와 같은 문제가 발생하지 않았기 때문에 너무나 당황스러웠다.
try 1
구글에 계속 Sage 9 에러문구 관련해서 검색하다가 ACF와 호환이 잘안되는 것같은 이슈 티켓들이 많이 보여서 ACF와 관련해서 찾아보다가
https://discourse.roots.io/t/acf-and-sage-9/12834
해당 문제를 보고서 Sage controller를 사용해보기로 했다.
컨트롤러 내부에서도 동일하게 위 php 문법으로 이미지를 가져오는데 똑같은 이슈가 발생하는 것이다.
실패
하지만 이 문제를 해결하지 않으면 결국 모든 곳에 사용된 ACF를 변경해야하는 문제가 발생하고 플러그인 사용에 발목을 붙잡히는 격이어서 계속 시도하였다.
하지만 나중에 Controller를 통해서 유용하게 변수를 php 문법으로 대입해 줄 수 있는 방법을 찾은 것같아서 너무 삽질은 아니었다.
🔑 해결
이번엔 ACF 플러그인 관련해서 찾아보기 시작했다.
ACF에서 잘못된 문자열로 해당 값을 못가져오는 문제를 다루는 이슈 티켓이있어서 이 부분들 찾아보다가 이미지 배열이 아닌 ID와 같은 값을 반환하는?? 정확하게 어떤 문제인지 모르겠지만 이 문제를 해결할 수 있는 해킹 방법으로 내가 겪고있는 문제를 일단 해결했다.
$image = get_field('logo', 'option');
if (!is_array($image)) {
$image = acf_get_attachment($image);
}
$url = $image['url'];
Code language: PHP (php)