안녕하세요. KBoard 게시판 플러그인을 좋아하는 사용자입니다.
한가지 아쉬운 점은 게시판 개별 글 URL 형태가 파라미터 형식이어서,
워드프레스 내장 함수인 add_rewrite_rule()를 사용하여, 'uid' 쿼리스트링 부분을 'Pretty URL'화하려고 합니다.
function my_add_query_vars_filter( $vars ){
$vars[] = "uid";
return $vars;
}
add_filter( 'query_vars', 'my_add_query_vars_filter' );
function my_plugin_rewrite_tag_rule() {
add_rewrite_tag( '%uid%', '([^&]+)' );
add_rewrite_rule('^/(.*)/?', 'index.php?uid=$matches[1]', 'top');
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
add_action('init', 'my_plugin_rewrite_tag_rule', 10, 0);
function myplugin_pre_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() ){
return;
}
$uid_value = get_query_var( 'uid' );
if( !empty( $uid_value ) ){
$query->set( 'meta_key', 'uid' );
$query->set( 'meta_value', $uid_value );
$query->set( 'meta_compare', 'LIKE' );
}
}
add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );
URL 형식을 바꾸고, 입력할 쿼리 내용은 별도로 'meta_key' 등으로 설정하는 것인데,
코드가 제대로 적용이 되지 않아 의문입니다.
아마도 케이보드의 구조를 모두 이해하지 못해서일 수도 있을 듯 한데,
혹시 해결을 위한 방법이 있으실지 궁금합니다!
안녕하세요~^^
올려주신 코드에 대해서 전체적으로 잘 이해는 안가지만 특히 아래 코드 부분이 더 이해가 안가고 있습니다.
$query->set( 'meta_key', 'uid' );
$query->set( 'meta_value', $uid_value );
$query->set( 'meta_compare', 'LIKE' );
uid는 게시글 uid라고 생각하면 될까요?
그럼 그냥 KBoard 플러그인의 클래스 혹은 함수를 사용하시는 게 어떠신지요?
아래의 코드를 응용해서 게시글 정보를 초기화할 수 있습니다.
$content = new KBContent();
$content->initWithUID($uid); // 게시글 정보 초기화
// 제목 출력
echo $content->title;
// 내용 출력
echo $content->content;
고맙습니다.