안녕하세요.
K보드의 추가 텍스트 입력필드 (id : related_board_link) 를 생성하였습니다.
입력필드에 입력된 값이 URL일 경우 게시판 본문이나 댓글처럼 하이퍼링크를 자동 생성하는 방법이 있을까요?
** 본문과는 다른 질문이지만, 댓글의 경우 최초 작성할 시에는 하이퍼링크가 잘 적용됩니다.
하지만 댓글을 수정하게되면, 하이퍼링크로 적용된 URL에 <a href="xx...">xx...</a> 가 붙으면서, 수정 시 a 태그를 지워주지 않으면 html 태그가 꼬이는 현상이 발생하는데요.
이것도 해결방안이 있는지 궁금합니다.
항상 정확하고 빠른 답변 감사드립니다.
안녕하세요~^^
KBoard 플러그인 입력 필드 설정으로 추가한 필드에
주소가 있을 경우 링크를 추가하시려면
아래의 코드를 활용해보시겠어요?
add_filter('kboard_document_add_option_value_field_html', 'kboard_document_add_option_value_field_html_20200721', 10, 4);
function kboard_document_add_option_value_field_html_20200721($html, $field, $content, $board){
$meta_key = isset($field['meta_key']) ? $field['meta_key'] : '';
$field_name = isset($field['field_name']) ? $field['field_name'] : $field['field_label'];
if($meta_key == '메타키' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$html = '<div class="kboard-document-add-option-value meta-key-'.$meta_key.'"><span class="option-name">'.$field_name.'</span> : '.$content->autolink($content->option->{$meta_key}).'</div><hr>';
}
return $html;
}
위의 코드에서 메타키 부분은 실제 필드의 메타키로 적용해보세요.
$board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
글 작성 에디터를 textarea로 사용하고 게시글 본문 자동링크 사용 활성화 시에도
댓글 쪽에 자동링크를 추가하고 있습니다.
저희 테스트 서버에서는 댓글 편집 시 <a> 태그가 표시되지 않는 것을 확인했습니다.
만약, 별도로 코드를 수정하셨다면
어떤 코드를 추가하셨는지 알려주시겠어요?
프로그램 코드를 올려야 할 경우 에디터의 코드 스니펫 삽입 기능을 사용해주세요.
고맙습니다.
안녕하세요?
메타키 링크 연결은 올려주신 코드로 잘 해결하였습니다. 감사합니다.
글작성에디터로 TextArea를 사용 할 경우, 사진 삽입이 안되는 관계로 워드프레스 내장에디터를 사용중입니다.
댓글에 하이퍼링크를 연결하기 위해, 아래 코드를 추가해서 사용중입니다.
감사합니다.
<?php
/******************************************
* K 보드 댓글 하이퍼링크 자동 href 연결
******************************************/
add_filter('kboard_comments_content', 'my_kboard_comments_content', 10, 3);
function my_kboard_comments_content($comment, $comment_uid, $content_uid){
return preg_replace_callback('#(?i)(http|https)?(://)?(([-\w^@]+\.)+(kr|co.kr|go.kr|net|org|edu|gov|me|com|co+)(?:/[^,\s]*|))#', 'kboard_comment_autolink_prependHTTP', $comment);
}
function kboard_comment_autolink_prependHTTP($m){
$mStr = $m[1].$m[2].$m[3];
if(preg_match('#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#', $mStr)){
return "<a href=\"mailto:".$m[2].$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
else{
$http = (!preg_match("#(https://)#", $mStr)) ? 'http://' : 'https://';
return "<a href=\"".$http.$m[3]."\" target=\"_blank\">".$m[1].$m[2].$m[3]."</a>";
}
}
kboard_comments_content 필터를 사용해서 게시글 댓글을 편집 중이시라면
댓글 수정 시에는 댓글 내용 그대로 표시하면 될 듯합니다.
기존 코드 대신 아래의 코드로 교체해서 확인해보시겠어요?
add_filter('kboard_comments_content', 'my_kboard_comments_content', 10, 3);
function my_kboard_comments_content($comment, $comment_uid, $content_uid){
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';
if($action == 'kboard_comment_edit'){
return $comment;
}
return preg_replace_callback('#(?i)(http|https)?(://)?(([-\w^@]+\.)+(kr|co.kr|go.kr|net|org|edu|gov|me|com|co+)(?:/[^,\s]*|))#', 'kboard_comment_autolink_prependHTTP', $comment);
}
고맙습니다.
안녕하세요?^^
작성해주신 함수로 교체하니 잘 해결되었습니다.
감사합니다.