KBoard 플러그인과 WP Optimize 플러그인 호환 여부

1. 정확한 제품 또는 플러그인 이름

KBoard, WP Optimize

 

2. 상세 내용

사이트 속도를 빠르게 하기 위해 캐시 플러그인을 설치했습니다.

그런데, 페이지 하단에 아래와 같은 주석 문구가 표시되고 캐시 처리가 안 되는 것 같아요.

게시판이 설치된 페이지라면 캐시가 문제될 수 있어 이해하겠지만 게시판이 설치되지 않은 페이지에서도 표시되고 있어요.

<!-- WP Optimize page cache - https://teamupdraft.com/wp-optimize/ - Page not served from cache -->

 

디버깅을 통해 "In the settings, caching is disabled for matches for one of the current request's GET parameters" 메시지가 표시되는 걸 확인했고

KBoard 쪽에서 $_GET 변수에 kboard_id, mod를 강제로 넣고 있는 걸 확인했습니다. 그 값이 없더라도요.

 

KBoard 플러그인 index.php 파일의 아래 코드들 문제로 예상합니다.

add_action('plugins_loaded', 'kboard_plugins_loaded');
function kboard_plugins_loaded(){
	if(!session_id() && (!is_admin() || kboard_id()) && !wp_is_json_request()){
		session_start();
	}

	// 언어 파일 추가
	if(version_compare($GLOBALS['wp_version'], '6.7', '<')){
		load_plugin_textdomain('kboard', false, dirname(plugin_basename(__FILE__)) . '/languages');
	}
	else{
		load_textdomain('kboard', KBOARD_DIR_PATH . '/languages/kboard-' . determine_locale() . '.mo');
	}
}
/**
 * 테마 헤더에 정보 출력
 */
function kboard_get_header(){
	// SEO 시작
	include_once 'class/KBSeo.class.php';
	$seo = new KBSeo();
}
add_action('get_header', 'kboard_get_header', 999);

케이보드가 설치되어 있지 않은 페이지에서도 저 코드가 실행되며 $_GET 변수에 kboard_id와 uid를 빈값으로 넣고 있어요

그러면서 WP Optimize 플러그인에서 제대로 캐시 처리를 못하고 있습니다.

개선이 가능할까요?

실제 $_GET 변수에 케이보드 관련 변수를 넣는 건 kboard_id(), kboard_mod() 함수에 있네요.

 

 

3. 확인 가능한 상세 페이지 주소

 

 

4. 수정한 코드 내역 (있다면)

 

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • AI에 의해 자동 생성된 답변이에요 😀

    KBoard 플러그인과 WP Optimize 플러그인 호환성 문제로 인해 캐시 처리가 제대로 되지 않는 상황에 대해 문의주셨습니다.

    제공해주신 정보에 따르면, KBoard 플러그인이 게시판이 설치되지 않은 페이지에서도 `$_GET` 변수에 `kboard_id`와 `mod` (또는 `uid`)를 빈 값으로 추가하여 WP Optimize 플러그인의 캐시 기능을 방해하고 있는 것으로 보입니다. WP Optimize는 `$_GET` 변수에 특정 파라미터가 있을 경우 캐시를 비활성화하는 설정이 있기 때문에 이러한 문제가 발생할 수 있습니다.

    KBoard 플러그인의 `index.php` 파일 내 `plugins_loaded` 액션과 `get_header` 액션에서 실행되는 코드들이 이 문제의 원인으로 지목되고 있습니다. 특히 `kboard_id()` 및 `kboard_mod()` 함수에서 `$_GET` 변수를 조작하는 부분이 영향을 미치는 것으로 파악됩니다.

    이러한 문제를 해결하기 위한 몇 가지 개선 방안을 제안해 드릴 수 있습니다.

    1. **KBoard 플러그인 코드 수정 (권장):**

    * `kboard_id()` 및 `kboard_mod()` 함수가 `$_GET` 변수를 무조건 추가하는 대신, 실제 KBoard 게시판이 로드되는 페이지에서만 해당 변수를 추가하도록 조건을 추가하는 것이 가장 근본적인 해결책입니다.

    * 예를 들어, `is_kboard_page()`와 같은 함수를 만들어 현재 페이지가 KBoard 게시판 페이지인지 확인한 후 `$_GET` 변수를 설정하도록 코드를 수정할 수 있습니다.

    * `add_action('get_header', 'kboard_get_header', 999);` 이 코드가 모든 페이지에서 실행되어 `KBSeo.class.php`를 포함하고 `kboard_id()` 등을 호출할 가능성이 있으므로, 이 부분도 KBoard 관련 페이지에서만 실행되도록 조건부 로딩을 고려해볼 수 있습니다.

    2. **WP Optimize 캐시 설정 조정:**

    * WP Optimize 플러그인의 캐시 설정에서 `kboard_id`와 `mod` (또는 `uid`) 파라미터가 있을 때도 캐시가 작동하도록 예외 처리를 할 수 있는지 확인해 보세요. 일부 캐시 플러그인은 특정 `$_GET` 파라미터를 무시하고 캐시를 생성하는 옵션을 제공하기도 합니다.

    * 하지만 이 방법은 KBoard가 해당 변수를 사용하는 의도를 무시하게 될 수 있으므로, KBoard의 정상적인 동작에 영향을 줄 가능성도 있습니다.

    3. **KBoard 개발팀에 문의:**

    * 이 문제는 KBoard 플러그인의 설계와 관련된 부분일 수 있으므로, KBoard 개발팀에 해당 현상을 설명하고 공식적인 개선 방안이나 업데이트를 요청하는 것이 가장 확실한 방법입니다. 다른 사용자들도 동일한 문제를 겪고 있을 수 있으며, 개발팀에서 플러그인 업데이트를 통해 해결해 줄 수 있습니다.

    현재로서는 KBoard 플러그인의 코드 수정이 가장 직접적이고 효과적인 해결책으로 보입니다. 다만, 플러그인 코드를 직접 수정할 경우 향후 플러그인 업데이트 시 수정 내용이 덮어씌워질 수 있으므로, 자식 테마의 `functions.php`를 이용하거나 별도의 플러그인을 만들어 수정하는 방법을 고려해볼 수 있습니다.

    어떤 방법을 선택하시든, 변경 사항을 적용하기 전에 반드시 웹사이트 백업을 진행하시고 테스트 환경에서 먼저 확인해 보시는 것을 권장합니다.

    ↓ 아래 버튼을 눌러서 피드백해주세요.

  • 플러그인 코드를 수정 시 업데이트하면 초기화 되는데 매번 업데이트할 때마다 코드를 수정해주어야 하는걸까요..?

  • 안녕하세요~^^

    저희 쪽에서도 문의주신대로 동일한 환경에서 한번 테스트를 해보고 

    빠른 시일 내에 개선가능한지 답변 다시 남겨드리겠습니다. 

    아래는 참고할만한 링크를 남겨드릴 테니 한번 참고해 보시겠어요?

    https://www.cosmosfarm.com/threads/document/49756

    https://www.cosmosfarm.com/threads/document/39490

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기