워드프레스 6.8 버전대로 업데이트 한 뒤로
위시리스트인 [yith woocommerce wishlist] 를 정상 설치하고 찜을 눌러도 아무 반응이 없었고, 대체 플러그인을 [ti woocommerce wishlist] 로 바꾸어도 찜 눌렀을 때 반응이 없었다.
[우커머스 한국형 주소, Korea Address]도 정상 설치하여 작동하다가 업데이트 후 우편번호 찾기 업창이 안뜬다.
wp-config.php 를 열어 define( 'WP_DEBUG', true ); 로 변경한 후 오류를 살펴 보았다.
Function _load_textdomain_just_in_time was called incorrectly.
위와 같은 메시지가 나왔고 또 이어서
Translations should be loaded at the init action or later.
라는 메시지도 보인다.
호출 순서의 문제인 듯 해서 비슷한 사례로 검색하면 문제가 되는 플러그인에서 plugins_loaded 를 init 로 변경하란 방법이 있지만 이 부분은 하면 안된다. 또 다른 문제점이 이어서 발생한다.
그리고 많은 대안들은 6.7.x 버전대 이전인 6.6.x 버전대로 다운그레이드 하라고 한다.
https://wordpress.org/support/topic/translations-should-be-loaded-at-the-init-action-or-later-error/
그렇지만 다운그레이드를 또 진행하게되면 잘 작동되던 플러그인들이 또 문제가 될 수 있다.
그래서 다운그레이드 외 대안으로 오류가 나는 플러그인을 그냥 쓰게 하는 플러그인을 업로드해서 활성화하란 것이다.
그렇다면 어떻게 할까?
plugin 폴더 최상단에 아무 파일명으로 php 파일을 하나 만든다.
나는 disable-wp-textdomain-error.php 로 만들었고 그 안에 내용을 아래 내용으로 넣었다.
<?php /** * Plugin Name: Disable Textdomain Error * Description: Prevents triggering errors for the '_load_textdomain_just_in_time' function. * Author: Kowsar Hossain * Version: 1.0 * * Note: This is a Must-Use (MU) plugin. Place this file in the 'wp-content/mu-plugins' directory. */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } add_filter( 'doing_it_wrong_trigger_error', function( $status, $function_name ) { if ( '_load_textdomain_just_in_time' === $function_name ) { return false; } return $status; }, 10, 2 );
해당 코드는 https://gist.github.com/kowsar89/ed30f2b7abc5d4784ba4b05503c70fe0 여기를 참고하였다. 파일을 만들었으면 plugin 폴더 루트에 업로드하고 관리자에서 플러그인 활성화하면 된다.


이렇게 하고 나니 정상적으로 작동되었다.
모든 플러그인들이 워드프레스 버전에 맞춰 수정되어 업데이트 되거나 해당 내용을 수정한 워드프레스 버전이 나올 때 까지는 이렇게 유지해야할 것 같다.