글 중에
https://www.cosmosfarm.com/threads/document/29290 와
https://www.cosmosfarm.com/threads/document/26152 여기에
쓰여진 기능이 모두 필요해서 function.php 에 넣어 작성했는데요
충돌이 나서 필터 기능이 작동하지 않는데 어떻게 작성해야될까요?
특정 기간의 게시글만 표시하면서 검색 기능을 사용하시려는 지요?
올려주신 코드 대신 아래의 코드로 교체해보시겠어요?
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
if($board_id == '1'){
$today = date('Ymd', current_time('timestamp'));
$day = '5';
$date = date('Ymd000000', strtotime("{$today} - {$day} days"));
$keyword = kboard_keyword();
$target = kboard_target();
$where = "`board_id`= '{$board_id}' AND `date`>='{$date}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
if($keyword){
if($target){
$where .= " AND (`{$target}` LIKE '%{$keyword}%')";
}
else{
$where .= " AND (`title` LIKE '%{$keyword}%' OR `content` LIKE '%{$keyword}%' )";
}
}
}
return $where;
}
그리고 코드를 올려주실 땐 반드시 에디터의 "코드 스니펫 삽입" 기능으로 삽입해주세요.
그렇지 않으면, 코드가 이상해져서 에러 나는 코드로 바뀌거나
질의응답 시 의사소통에 오해와 문제가 생길 수도 있기 때문입니다
고맙습니다.
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
if($board_id == '1'){
$today = date('Ymd', current_time('timestamp'));
$day = '5';
$date = date('Ymd000000', strtotime("{$today} - {$day} days"));
$where = "`board_id`= '{$board_id}' AND `date`>='{$date}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
return $where;
}
이 소스가 문제인 듯 한데 한번 확인해주시겠어요?
앗! 아예 하단에 서치기능이 작동이 안되어버리네요!
안녕하세요~^^
올려주신 링크의 코드는 서로 영향을 끼치는 코드가 아니기 때문에
해당 코드들도 충돌이 나는 건 아닌 듯합니다.
정확한 원인을 파악하기 위해서는
디버그 모드를 활성화해서 오류 메시지가 있는지 확인해보시겠어요?
올려주신 내용만으로 추측하자면,
PHP 함수명이 겹치는 문제일 수도 있습니다.
필터는 여러 개 중복해서 사용하셔도 문제없지만
다만, PHP에서 같은 함수명을 중복해서 사용할 수는 없습니다.
새로 추가하신 코드 중에서 my_kboard_list_where 부분을
my_kboard_list_where1 이런 식으로 모두 교체하신 후 다시 추가해보시겠어요?
고맙습니다.