최신 글 모아보기 게시물에 있는 게시판이 워드프레스 Post에 있을 경우 문제가 있습니다.

안녕하세요.

이전에 이와 비슷한 질문을 올렸는데 내용이 중구난방으로 길어지고

원인을 찾아나가면서 질문 자체를 바꿔야겠다는 생각이 들어 다시 올리게 되었습니다.

 

현재 kboard 게시판이 Post에 (워드프레스 '페이지'가 아닌 워드프레스 '글') 업로드 되어있고, 여기에 있는 게시물을 최신 글 모아보기를 통해 연결되도록 하고싶습니다.

그런데 최신 글 모아보기를 통해 게시물로 진입하려고 하면 사이트 홈으로 이동하는 현상이 발생합니다.

 

이전에 이와 비슷한 다른 분께서 질문을 남기신 사례를 보았는데요,

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

위 사례를 보면 kboard는 post와 page를 구분하지 못해서 나타나는 증상이며, functions.php 내용 추가를 통해 게시판이 적용된 post의 주소를 직접 작성해서 넣는 쪽으로 해결책을 제공해주셨습니다.

그런데 저의 경우는 post가 계속 추가될 예정이고, 그 때마다 새로운 kboard 게시판을 추가할 예정이라

특정 post 주소 하나를 넣는것이 아닌 앞으로 계속 추가 될 post에도 적용할 수 있는 코드가 필요할 것 같습니다.

 

여러가지 시도를 해보았지만 생각보다 너무 어려운 작업이라 질문을 정리해서 다시 업로드 하였습니다.

부탁드리겠습니다.

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

    아래의 코드를 테마 functions.php에 입력해보시겠어요?

    add_filter('kboard_router_content_url', 'kboard_router_content_url_220610', 10, 4);
    function kboard_router_content_url_220610($content_url, $page_id, $board_id, $content_uid){
    	global $wpdb;
    	
    	$post_id = $wpdb->get_var("SELECT `ID` FROM `wp_posts` WHERE `post_content` LIKE '%kboard id={$board_id}%' AND `post_type` = 'post' AND `post_status` = 'publish'");
    	$site_url = get_permalink($post_id);
    	if($board_id){
    		$content_url = add_query_arg(array(
    			'uid' => $content_uid,
    			'mod' => 'document',
    		), $site_url);
    	}
    	return $content_url;
    }

     

    커뮤니티에서 모든 문제를 해결하기는

    현실적으로 어려움이 있습니다.

     

    특히 본 건의 경우 직접 확인할 수 없어

    예상으로만 작성된 코드이기 때문에

    정상 동작하는지 반드시 확인 해주세요.

     

    위 코드가 동작하지 않는다면

    커뮤니티에서는 사실상 해결이 어렵습니다.

     

    위 코드가 동작하지 않는다면

    프로젝트 의뢰에 자세한 내용을 남겨

    의뢰로 진행하시는 편이 빠르실 듯 합니다.

    https://www.cosmosfarm.com/project

    고맙습니다.

  • 안녕하세요.

    말씀하신대로 functions.php에 입력하니 여전히 문제가 똑같습니다.

    현재 클라이언트측에서 사이트 완전 공개만을 반대하시고, 제작에 있어 도움을 받을 수 있는 창구는 공개를 허용하고 있습니다.
    스레드 봇에게만 별도로 코드 및 사이트를 공유드릴 수 있는 방법이 있다면 그를 통해서라도 도움을 요청받고 싶습니다.

    스레드 봇에게 전용으로 링크를 공유드릴 수 있는 방법을 말씀주시면 공유드리도록 하겠습니다.

    (메일도 가능합니다).

  • 안녕하세요.

    조금전에 고객센터 메일(support@cosmosfarm.com)을 통해 질문을 드렸고, 관리자 권한 및 스킨 파일까지 모두 전달드렸습니다.

    꼭 해결을 해야하는 부분이라 잘 부탁드리겠습니다.

  • 커뮤니티 내에서 안내드린 코드는 post 글 내부에서

    문자열을 검색하여 post id를 가져오고, post id를 기초로 한 url을

    입력되도록 하는 코드였습니다.

     

    저희쪽에서 확인해봤을 때 잘 동작하던 코드가

    실제로 동작되지 않는 것을 확인했습니다.

     

    글의 정보들을 확인해보니 

    kboard 숏코드는 post meta로 입력되고 있었습니다.

     

    정보가 어떤 식으로 저장되는지 정확히 확인 후

    문의를 주시거나 코드를 적용해주시는 편이 

    조금 더 빠르고 정확한 대응에 도움이 될 듯 합니다.

     

    아래 코드는 적용된 코드입니다.

    add_filter('kboard_router_content_url', 'kboard_router_content_url_220610', 10, 4);
    function kboard_router_content_url_220610($content_url, $page_id, $board_id, $content_uid){
    	global $wpdb;
    	
    	// $post_id = $wpdb->get_results("SELECT `ID` FROM `{$wpdb->prefix}posts` WHERE `post_content` LIKE '%kboard id={$board_id}%' AND `post_type` = 'post' AND `post_status` = 'publish'"); // 내용에서 찾음
    	$post_id = $wpdb->get_var("SELECT `ID` FROM `{$wpdb->prefix}posts` LEFT JOIN `{$wpdb->prefix}postmeta` ON `{$wpdb->prefix}posts`.`ID` = `{$wpdb->prefix}postmeta`.`post_id` WHERE `post_type` LIKE 'post' AND `post_status` = 'publish' AND `meta_key` = 'board_code' AND `meta_value` LIKE '%kboard id={$board_id}%'"); // post meta에서 찾음
    	
    	if($post_id){
    		$page_id = $post_id;
    	}
    	
    	$site_url = get_permalink($page_id);
    	if($board_id){
    		$content_url = add_query_arg(array(
    			'uid' => $content_uid,
    			'mod' => 'document',
    		), $site_url);
    	}
    	
    	return $content_url;
    }

    고맙습니다.

  • 공유주신 코드를 보니 대략 어떤 부분이 문제였는지 이해가 되는것 같지만, 이러한 코드를 제가 직접 문제를 확인해서 해결하기에는 확실히 어려운 코드였다는 생각이 드네요.

    잘 적용되었고 문제없이 작동합니다. 감사합니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요