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;
}
});
안녕하세요~^^
남겨주신 코드에 kboard_before_view는 Kboard에서 사용하는 액션이나 필터가 아닙니다.
따라서 동작하지 않을 가능성이 높습니다.
아래 KBoard 플러그인에 적용된 주요 액션과 필터 링크를 남겨드릴 테니
링크를 참고하셔서 코드를 수정해 보시겠어요?
수정해야 할 부분이 많거나 코드를 직접 수정하기 어려우시다면
프로젝트 의뢰에 상세 내용을 올려보세요.
https://www.cosmosfarm.com/project
고맙습니다.
안녕하세요.
답변 감사합니다. 다만, KBoard 플러그인에 적용된 주요 액션과 필터 링크가 어디에 남겨주신지를 잘 모르겠습니다.
안녕하세요~^^
착오가 있어서 링크를 남겨드리지 못했네요
주요 액션 필터 링크 입니다.
아래 링크에서 KBoard 플러그인 업데이트 내역을 확인해보실 수 있으며
추가된 액션이나 필터를 확인해보실 수 있습니다.
https://github.com/cosmosfarm/KBoard-wordpress-plugin/blob/master/plugins/kboard/history.md
고맙습니다.
AI 상담