공개 게시물에 특정 필드 내용 비공개 방법

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

kboard, default theme

 

2. 상세 내용

게시물 작성할 때 이메일, 전화번호 등의 개인정보를 입력하도록 되어있습니다. 작성자가 비밀글을 체크하지 않은 경우, 해당 필드 값들이 공개되지 않고, 비밀글을 체크했을 때만 관리자나 작성자가 확인 가능하도록 하고자 합니다.

chatGPT를 이용해서 메타키를 이용한 필터를 function.php 파일에 넣었는데 동작이 되지 않습니다. 어디를 어떻게 수정하면 좋은지 알려주시면 감사하겠습니다.

 

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

http://3.39.225.52/?mod=list

 

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

 

add_action('kboard_before_view', function($content) {
    $hidden_keys = ['abcde', 'fghij', 'klmnop']; // meta keys to hide

    if (!($content instanceof KBContent)) return;

    // Wrap KBContent to override getDocumentOptionsHTML
    $original_class = get_class($content);

    // Only wrap once to prevent conflicts
    if ($original_class === 'KBContent') {
        $content_wrapper = new class($content, $hidden_keys) extends KBContent {
            private $original;
            private $hidden_keys;

            public function __construct($original, $hidden_keys) {
                foreach (get_object_vars($original) as $k => $v) {
                    $this->$k = $v;
                }
                $this->original = $original;
                $this->hidden_keys = $hidden_keys;
            }

            public function getDocumentOptionsHTML(){
                $html = $this->original->getDocumentOptionsHTML();
                
                // 공개글일 경우, 전화번호/이메일 등의 값을 삭제
                if (isset($this->secret) && $this->secret === 'n') {
                    foreach ($this->hidden_keys as $key) {
                        $html = preg_replace('/<div[^>]*meta-key-' . preg_quote($key, '/') . '[^>]*>.*?<\/div>/si', '', $html);
                    }
                }

                return $html;
            }
        };

        $GLOBALS['content'] = $content = $content_wrapper;
    }
});
 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기

AI 상담