확장필드->파일에 업로드 된 게 이미지일 경우 본문에 보여주는 기능

안녕하세요.

이와 같은 질문이 상당히 많은데 적용시켜보니 하나같이 의도와는 조금 벗어난 질문밖에 없어서 남기게 되었습니다.

게시물 입력 필드에 'Kboard 기본 입력필드' -> '첨부파일'이 추가되어있고, 그와 별개로 '확장필드' -> '파일'을 하나 추가했습니다.

 

여기서 '확장필드' -> '파일'에 이미지가 업로드 된 것만 본문에 나타나게 하고싶은데

기존에 찾아본 다른 질문 해결사항에는 기본입력 필드에 있는 첨부파일과, 확장필드 파일 모두 본문에 나타나는 방식으로 해결하게 되어있어 난항을 겪는중입니다.

'확장필드' -> '파일'에 해당되는 스킨 출력 예제는 <?php echo $content->attach->{'first_img'}[1]?> 입니다.

이것만 본문에 이미지에 나타나도록 하고싶습니다.

=================================================

문제의 코드는 document.php에 추가 되어있으며 하기와 같습니다.

<?php foreach($content->attach as $key => $attach):?>
        <img src="<?php echo get_site_url() . $attach[0]?>" alt="<?php echo $attach[1]?>">
<?php endforeach?>

=================================================

어떻게 하면 해결이 가능한가요?

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

    KBoard 플러그인 확장 필드에서 파일 필드로 이미지를 업로드할 경우

    본문에 이미지를 표시하고 싶다는 말씀이신지요?

    이전에 비슷한 문의가 있었습니다.

    아래 링크의 답변을 참고 부탁드립니다.

    https://www.cosmosfarm.com/threads/document/42280#document-answer-42977

    고맙습니다.

  • 안녕하세요. 저는 첨부파일 메타키가 'first_img'라서 이렇게 적용시켜보았는데 동작하지 않았습니다.

    <?php 
    		add_filter('kboard_content', 'kboard_content_2020_04_17', 10, 3);
    function kboard_content_2020_04_17($kboard_content, $content_uid, $board_id){
    	if($board_id == '3'){ // 실제 게시판 id로 적용해주세요.
    		$content = new KBContent();
    		$content->initWithUID($content_uid);
    		
    		if(isset($content->attach->{'first_img'}) && $content->attach->{'first_img'}){
    			$extension = strtolower(pathinfo($content->attach->{'first_img'}[0], PATHINFO_EXTENSION));
    			if(in_array($extension, array('gif','jpg','jpeg','png'))){
    				$kboard_content .= '<p class="thumbnail-area"><img src="'.site_url($content->attach->{'first_img'}[0]).'" alt="'.$content->attach->{'first_img'}[1].'"></p>';
    			}
    		}
    	}
    	return $kboard_content;
    }
    		?>

    저의 경우 게시판 id는 3이 맞습니다.

    무엇이 문제일까요?

  • 해당 코드가 저희 쪽 테스트 서버에서는 정상적으로 동작하는 것을 확인했습니다.

    첨부파일 메타키 및 게시판 id를 정상적으로 입력하셨다면

    첨부파일의 확장자는 어떤 걸로 업로드하셨는지요?

    올려주신 코드는 gif, jpg, jpeg, png 파일에만 적용됩니다.

    고맙습니다.

  • 안녕하세요 확장자는 png가 맞습니다.

    여전히 안되는데 ... 무엇이 문제인지 알 수가 없네요; 아무것도 없이 빈공간만 나옵니다.

    이 코드가 '확장필드'(메타키:first_img) -> '파일'에 해당되는 이미지를 본문에 보여주는 코드가 정확히 맞나요 ...?

  • 올려주신 코드에서 게시판 id만 바꿔서 저희 쪽 테스트 서버에서 확인해보면

    정상적으로 동작합니다.

    해당 내용은 저희도 확인을 해봐야 할 듯합니다.

    저희 고객지원 쪽 이메일로 워드프레스 관리자 계정과 FTP 접속 정보를 보내주시면 점검해드리겠습니다.

    고맙습니다.

  • 안녕하세요. 메일 보내드렸습니다. 부탁드리겠습니다. 감사합니다.

  • 안녕하세요.

    저희 고객지원 쪽 이메일로 보내주신 정보로 확인해보니

    올려주신 코드에는 문제가 없는 것을 확인했습니다.

     

    올려주신 kboard_content 필터를 임시로 테마의 functions.php 파일 하단에 추가해보니

    정상적으로 동작하는 것을 확인했습니다.

    현재는 해당 코드를 지워둔 상태입니다.

     

    해당 코드는 게시글 본문 내용 이후에 이미지 파일을 표시하는 코드입니다.

    코드는 어디에 추가하셨는지요?

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

     

    만약, document.php 파일에 직접 코드를 추가하시려면

    아래의 코드를 활용해보세요.

    <?php
    if(isset($content->attach->{'first_img'}) && $content->attach->{'first_img'}){
    	$extension = strtolower(pathinfo($content->attach->{'first_img'}[0], PATHINFO_EXTENSION));
    	if(in_array($extension, array('gif','jpg','jpeg','png'))){
    		?>
    		<p class="thumbnail-area"><img src="<?php echo site_url($content->attach->{'first_img'}[0])?>" alt="<?php echo $content->attach->{'first_img'}[1]?>"></p>
    		<?php
    	}
    }
    ?>

    고맙습니다.

  • 안녕하세요 질문자입니다.

    위에 방법들 전부 다 안되었고, 제가 여러 시도를 하다가 방법을 찾아냈습니다.

    아래 방법이 작동이 잘 됩니다.

    <img src="<?php echo $content->attach->{'first_img'}[0]; ?>" alt="<?php echo $content->attach->{'first_img'}[1]; ?>">
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요