워드프레스 소모임이 개설되었군요 ^^ > 자유게시판

자유게시판

워드프레스 소모임이 개설되었군요 ^^ 정보

워드프레스 소모임이 개설되었군요 ^^

본문

워드프레스 소모임 개설 기념으로 개인홈페이지에서 현재 사용중인 플러그인을 공개합니다.

 

워드프레스 구조상 속도가 느린데 캐시 플러그인을 통해 속도 문제는 해결할 수 있습니다.

 

제가 사용중인 캐시 플러그인은 WP Super Cache(https://wordpress.org/plugins/wp-super-cache/) 으로 여러 옵션을 제공하고 있습니다.

 

Advance 옵션을 통해 로그인 사용자도 익명사용자와 동일한 캐시로 사용할 수 있습니다. 

 

그런데 로그인한 상태임에도 익명의 캐시된 페이지를 출력함으로 로그아웃한 상태로 보이는 문제점이 있어 관련 기본 위젯을 대신해 쿠키를 통해 사용할 수 있도록 플러그인을 만들었습니다.

 

{워드프레스 경로}/plugins/kh-widget-meta/kh-widget-meta.php 에 아래 내용을 작성하면 됩니다.

 

<?

/*

Plugin Name: Kilho's Widget_Meta with Cookie

Plugin URI: http://www.kilho.net/plugins/kh-widget-meta/

Description: 기본 Widget_Meta 에 로그인 쿠키정보를 이용한 출력 모듈

Author: Oh Kilho

Version: 0.1

Author URI: http://www.kilho.net/

*/

 

define('DISPLAYNAME_COOKIE', 'wordpress_display_name');

 

add_action('set_logged_in_cookie', 'kh_set_logged_in_cookie', 10, 5);

function kh_set_logged_in_cookie($logged_in_cookie, $expire, $expireation, $user_id, $logged_in)

{

wp_set_current_user($user_id);

$user = wp_get_current_user();

setcookie(DISPLAYNAME_COOKIE, $user -> display_name, $expire, COOKIEPATH, COOKIE_DOMAIN);

}

 

add_action('wp_logout', 'kh_wp_logout');

function kh_wp_logout()

{

setcookie( DISPLAYNAME_COOKIE, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH,      COOKIE_DOMAIN );

}

 

class KH_Widget_Meta extends WP_Widget {

 

function KH_Widget_Meta() {

$widget_ops = array('classname' => 'widget_meta', 'description' => '쿠키를 통해 로그인폼 출력' );

parent::__construct('kh-meta', '(KH) '.__('Meta'), $widget_ops);

}

 

function widget( $args, $instance ) {

extract($args);

$title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title'], $instance, $this->id_base);

 

echo $before_widget;

if ( $title )

echo $before_title . $title . $after_title;

?>

<ul>

<li id="outlogin_1"></li>

<li id="outlogin_2"></li>

<li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>

<li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>

</ul>

<script type="text/javascript">

// Trim - IE8 Error : Object doesn't support this property or method

if(typeof String.prototype.trim !== 'function') 

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

 

// http://www.w3schools.com/js/js_cookies.asp

function getCookie(cname)

{

var name = cname + "=";

var ca = document.cookie.split(';');

if(ca.length>0)

for(var i=0; i<ca.length; i++) 

{

var c = ca[i].trim();

if (c.indexOf(name)==0) return c.substring(name.length,c.length);

}

return "";

}

 

var displayname = getCookie("<?=DISPLAYNAME_COOKIE?>");

if (displayname != "")

{

document.getElementById("outlogin_1").innerHTML = "<?='<a href=\"' . admin_url() . '\">' . __('Site Admin') . '</a>'?>";

document.getElementById("outlogin_2").innerHTML = "<?='<a href=\"' . esc_url( wp_logout_url($redirect) ) . '\">' . __('Log out') . '</a>'?>";

 

}else{

document.getElementById("outlogin_1").innerHTML = "<?='<a href=\"' . esc_url( wp_registration_url() ) . '\">' . __('Register') . '</a>'?>";

document.getElementById("outlogin_2").innerHTML = "<?='<a href=\"' . esc_url( wp_login_url($redirect) ) . '\">' . __('Log in') . '</a>'?>";

}

</script>

<?php

echo $after_widget;

}

 

function update( $new_instance, $old_instance ) {

$instance = $old_instance;

$instance['title'] = strip_tags($new_instance['title']);

 

return $instance;

}

 

function form( $instance ) {

$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );

$title = strip_tags($instance['title']);

?>

<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>

<?php

}

}

 

function kh_meta_register_widgets() {

register_widget( 'KH_Widget_Meta' );

}

 

add_action( 'widgets_init', 'kh_meta_register_widgets' );

?>

추천
2

댓글 2개

전체 84 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여1 회 시작24.04.25 20:23 종료24.05.02 20:23
  2. 참여80 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT