안녕하세요.
위젯으로 내글보기 기능을 넣기위해서 알려주신 아래 코드를 functions.php에서 사용중입니다.
add_action('widgets_init', 'test_my_kboard_latest_widget_init');
function test_my_kboard_latest_widget_init(){
register_widget('Test_My_KBoard_Latest_Widget');
}
class Test_My_KBoard_Latest_Widget extends WP_Widget {
public function __construct(){
parent::__construct('test_my_kboard_latest_widget', 'KBoard 내가 쓴 게시글', array(
'classname' => 'test_my_kboard_latest_widget',
'description' => '내가 쓴 게시글 목록을 볼 수 있습니다.',
));
}
public function widget($args, $instance){
global $wpdb;
echo $args['before_widget'];
if(!empty($instance['title'])){
echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
}
if(!empty($instance['limit'])){
$limit = intval($instance['limit']);
}
if($limit <= 0) $limit = 5;
if(is_user_logged_in()){
$where = array();
// 사용자 ID
$user_id = get_current_user_id();
$where[] = "`member_uid`='{$user_id}'";
// 제외할 게시판 아이디
if(!empty($instance['exclude'])){
$exclude = esc_sql($instance['exclude']);
$where[] = "`board_id` NOT IN ({$exclude})";
}
// 휴지통에 없는 게시글만 불러온다.
$where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
$where = implode(' AND ', $where);
$results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where} ORDER BY `date` DESC LIMIT {$limit}");
if(!$results){
echo '<p>내 게시글이 없습니다.</p>';
}
else{
$url = new KBUrl();
echo '<ul>';
foreach($results as $row){
echo '<li>';
$content = new KBContent();
$content->initWithUID($row->uid);
echo '<a href="'.$url->getDocumentRedirect($content->uid).'" title="이동">'.$content->title.'</a>';
echo '</li>';
}
echo '</ul>';
}
}
else{
$login_url = wp_login_url(get_permalink());
echo '<p>먼저 로그인 해주세요.</p>';
}
echo $args['after_widget'];
}
public function form($instance){
$title = !empty($instance['title'])?$instance['title']:'';
$limit = !empty($instance['limit'])?$instance['limit']:'5';
$exclude = !empty($instance['exclude'])?$instance['exclude']:'';
?>
<p>
<label for="<?php echo esc_attr($this->get_field_id('title'))?>">위젯 제목</label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id('title'))?>" name="<?php echo esc_attr($this->get_field_name('title'))?>" type="text" value="<?php echo esc_attr($title)?>">
</p>
<p>
<label for="<?php echo esc_attr($this->get_field_id('limit'))?>">출력개수</label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id('limit'))?>" name="<?php echo esc_attr($this->get_field_name('limit'))?>" type="text" value="<?php echo intval($limit)?>">
</p>
<p>
<label for="<?php echo esc_attr($this->get_field_id('exclude'))?>">제외할 게시판</label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id('exclude'))?>" name="<?php echo esc_attr($this->get_field_name('exclude'))?>" type="text" value="<?php echo esc_attr($exclude)?>" placeholder="예제 1,2,3">
<span>콤마(,)로 구분해서 게시판 ID를 입력해주세요.</span>
</p>
<?php
}
public function update($new_instance, $old_instance){
$instance = array();
$instance['title'] = (!empty($new_instance['title']))?strip_tags($new_instance['title']):'';
$instance['limit'] = (!empty($new_instance['limit']))?intval($new_instance['limit']):'';
$instance['exclude'] = (!empty($new_instance['exclude']))?strip_tags($new_instance['exclude']):'';
return $instance;
}
}
<p>내 게시글이 없습니다.</p><p>먼저 로그인 해주세요.</p>
위 두 내용을 wpml에서 번역하려고 하는데 인식이 안되네요. 번역 가능한 방법이 있는지 문의드립니다.
감사합니다.
안녕하세요~^^
올려주신 코드 중에서
아래의 코드를
echo '<p>내 게시글이 없습니다.</p>';
아래처럼 교체해보시겠어요?
if(get_locale() == 'ko_KR'){
echo '<p>내 게시글이 없습니다.</p>';
}
else{
echo '<p>Not found.</p>';
}
아래의 코드를
echo '<p>먼저 로그인 해주세요.</p>';
아래처럼 교체해보시겠어요?
if(get_locale() == 'ko_KR'){
echo '<p>먼저 로그인 해주세요.</p>';
}
else{
echo '<p>Please Login.</p>';
}
추가로 Poedit로 번역 파일을 만드신 후에
워드프레스에서 지원하는 __() 함수를 사용하셔도 됩니다.
Poedit는 한글도 지원하고 사용방법이 단순해서 어렵지 않게 새로운 번역을 추가하실 수 있습니다.
고맙습니다.