워드프레스 페이지(플거그인) 에 스크린샷 올리기

이제 워드프레스에 플러그인도 올렸고 사용자들을 좀더 유혹하기위해 keyword나 description 등을 올렸을 겁니다.

오늘은 ScreenShots을 노출하는 방법에 대해 설명드리겠습니다.

워드프레스의 플러그인페이지의 기본 정보는 플러그인에 포함된 readme.txt 파일을 기본으로 합니다.

readme.txt 파일을 열고
== Screenshots ==
1. 그림1에대한 설명
2. 그림2에 대한 설명

을 추가해 보겠습니다.

그림에 대한설명은 올렸는데 그림은 어디에 올리는가?
플러그인을 올릴때 제공받은 SVN에 보시면 assets 라는 폴더가 있습니다.
그곳에 올리시면 됩니다.

파일포맷 : png 혹은 jpg

파일크기 :  530px이 적정하나 리사이징되므로 굳이 530에 맞출 필요는 없습니다.

파일이름 : screentshot-1.(png or jpg), screentshot-2.(png or jpg).. 등등으로 하시면 됩니다.

이렇게 svn에 올리시면  readme.txt에 기술된 설명과 맵핑되어 나타납니다.

참조 : http://wpsites.net/best-plugins/screen-shots-wordpress-org-plugins-page/

워드프레스 사용자를 위한 한국형 게시판 Pondol BBS 소개2

오늘은 pondol bbs의 위젯기능에 대해 말씀드리겠습니다.

pondol bbs는 일반적인 게시판 기능이외에 widget기능도 제공합니다.
위젯의 위치에 원하는 게시물이 나올수 있도록 (가령 메인의 공지사항 같은) 그 기능을 제공하고 있습니다.

이전에 다룬것과 같이 카테고리를 만들고 각각의 게시물을 등록합니다.
그리고 back-end에서 appearance > widget 에 보시면 pondol bbs widget 이 위젯리스트에 있죠.

원하는 곳으로 드레그엔드랍 하시고 간단한 세팅만 잡아 주시면 됩니다.

잡으실 세팅은 출력될 Title, 그리고 Category : 현재 pondol bbs 위젯에 출력할 카테고리를 멀티로 선택가능합니다., 그리고 출력할 리스트 수..
그리고 skin인데요. 이전에 말씀드린 것과 같이 pondol bbs는 일반 디자이너가 코더가 워드프레스 프로그램을 모르더라도 쉽게 스킨을 제작할 수 있게 지원하고 있습니다.

위젯 스킨은 /templates_widget 이하 폴더에 들어가는데 이곳에서는 새로운 폴더를 만드시고 그 하위에다가 widget_module.php 파일을 만드시고 스킨을 제작하시면 됩니다. 기존에 default가 존재하므로 이것을 참조하시면 쉽게 스킨이 제작가능합니다.

워드프레스 사용자를 위한 한국형 게시판 Pondol BBS 소개1

한국형 게시판인 pondol bbs에 대해서 런칭하였습니다.
오늘은 그 사용법에 대해서 기술할께요

일단
다운로드 : https://wordpress.org/plugins/pondol-bbs/ 에서 다운 받으시고
압축을 푼후 plugins 폴더에 올려둡니다.

그리고 wordpress 관리자단에 들어가 plugins에서 Pondol BBS를 찾아서 활성화 시킵니다.

그러면 좌측 메뉴에 Pondol BBS가 뜨는데 이곳을 클릭하시면 3가지 메뉴가 뜹니다.
가장 먼저 하실 일은 BBS Category에서 카테고리를 생성하는 것입니다.

일반적으로 게시판을 생성하는 것과 같은 기능을 합니다.

중요한 것은 BBS SKIN을 선택하는 것인데 현재 pondol bbs는 3가지 스킨을 제공하고 있습니다.
1. default : 일반적으로 사용하는 게시판입니다.
2. notice : 공지용으로 사용하기에 적합한 게시판입니다.
3. gallery : 겔러리용 게시판입니다.

이후 간단한 옵션을 선택하시면 됩니다. 특히 접근 권한 관리에서 Access All 이라는 기능이 있는데 이 기능은 비로그인 상태에서도 접근 여부를 체크합니다.

게시판의 특징이라면 기존 wordpress의 post의 기능을 그대로 사용한다는 것입니다.

그리고 한가지 주의 : gallery를 사용할 경우는 게시판을 등록할때 “Featured Image”에 이미지를 등록하여야 됩니다.

게시판은 각각의 경로(잘 모르시면 BBS Category에서 생성된 category의 View를 누르면 됩니다.)의 링크를 따다가 테마에 적용하면 됩니다.

**
pondol BBS의 가장 큰 장점중에 하나는 스킨입니다. 아마 대부분이 제로보드같은 우리나라 보드에 익숙해져 있고 또한 요구하는 고객에 맞추어 스킨을 커스터마이즈 하게 되는데 pondol BBS는 이런 부분 에 적합하게 되어 있습니다.

스킨을 제작하려면 plugins/pondol-bbs/templates/ 하위를 보시면 되는데 이곳에서는 현재 사용하는 3가지 기본 스킨들이 제공됩니다.
새로운 게시판 스킨을 만드시려면 이곳에서 새로운 이름으로 폴더를 만드시면 됩니다.
상세한 내용은 기존 스킨을 참조하시면 됩니다.

그리고 좀더 css를 고급적으로 다루려면 /pondol-bbs/css/하위에 보시면 현재 스킨과 동일한 폴더들이 존재하는데 이곳에서 제작하시려는 스킨폴더와 동일 폴더를 만드시고 하위에 pondol-bbs.css 파일을 위치해 두시면 자동으로 적용됩니다.

그럼 wordpress pondol-bbs와 즐거운 시간 되시기를 바랍니다.

wordpress, pondol-bbs, 게시판, board.bbs, 한국형게시판 edit
수정 삭제 설정 밴드북마크보내기
덧글 쓰기 엮인글 공감
워드프레스 사용자를 위한 한국형 게시판 프로그램 php
2014/06/18 16:28 수정 삭제
복사http://blog.naver.com/wangta69/220034195014
전용뷰어 보기
드디어 괜찮은 워드프레스용 한국형 게시판이 올라 왔습니다.

http://wordpress.org/plugins/pondol-bbs/

워드프레스와 100%로 호환되며 워드프레스의 기본 post를 그대로 활용하였습니다.

Custom Post Type 만들기 3

Custom Post Type 의 3번째로 front-end 단을 만들도록 하겠습니다.
이전에서 admin단에서의 사용자 정의 포스트를 만들었고 이렇게 만들면 실제적으로 프론트단에도 기존 테마와 같은 형태로 출력이 됩니다.

그러나 gallery를 만들었다고 하면 이 부분은 뭔가 특이한 모습을 보이기를 원할 것입니다.

이경우 사용하는 것이 “load_template”입니다. 그리고 if 문을 통해 특정 조건이 될때 특정 template가 노출되도록 적용하는 것입니다.

[php]
class PondolPlugin_Gallery_Plugin {
…………………………………………..
if ( ! is_admin()) {
add_filter( ‘template_include’, array( $this, ‘template_includes’ ));
}

public function frontend_includes($template) {
global $wp_query;
if ( $wp_query->query_vars["pondol_gallery_category"] ) {//pondol_gallery_category 일경우만 실행

add_filter( ‘the_content’, array( $this, ‘gallery_items’ ) );//리스트 상품에 대한 모양 적용
return PONDOLPLUGIN_GALLERY_PATH.’templates/default/archive-gallery.php’);

}

return $template;
}

public function gallery_items($content){
global $post;
$content = "<div><h2>";
$content .= $post->post_title;
$content .= "</h2></div>";
$content .= $post->post_content;
return $content;
}
…………………………………………..
}
[/php]

그리고 archive-gallery.php 는 아래와 같다.
기존 theme에 대해 공부를 하였다면 어렵지 않게 볼 수 있을 겁니다.

[php]

<?php
if ( ! defined( ‘ABSPATH’ ) ) exit; // Exit if accessed directly

get_header(); ?>

<?php if ( have_posts() ) : ?>

<?php while ( have_posts() ) : the_post(); ?>

<?php the_content(); ?>

<?php endwhile; // end of the loop. ?>

<?php endif; ?>

<?php get_footer( ); ?>
[/php]

Custom Post Type 만들기 2

저번 장에 만든것에서 사용자 정의 필드를 더 추가해 보도록 하겠습니다.
사용할 함수는
add_meta_box : 현재 new/edit 에 추가 입력을 덧붙임
save_post : post를 저장함
get_post_custom : 저장된 사용자 필드를 가져옮

입니다. 이전 장에 만든것과 함께 풀 소스는 아래와 같습니다.

[php]

<?php
/*
Plugin Name: Pondol Plugin Gallery
Plugin URI:
Description: General Gallery Program
Author: Pondol
Version: 1.0
Author URI: http://www.shop-wiz.com
License: GPL2

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/

define(‘PONDOLPLUGIN_GALLERY_VERSION’, ‘1.0’);
define(‘PONDOLPLUGIN_GALLERY_URL’, plugin_dir_url( __FILE__ ));
define(‘PONDOLPLUGIN_GALLERY_PATH’, plugin_dir_path( __FILE__ ));

class PondolPlugin_Gallery_Plugin {
function __construct() {
$this->init();
}

public function init() {

add_action( ‘init’, array($this, ‘register_gallery_posttype’));
add_action( ‘init’, array($this, ‘register_gallery_taxonomies’));
add_action("admin_init", array($this, ‘admin_init’));
add_action(‘save_post’, array($this, ‘save_details’));
}
function admin_init(){
add_meta_box("year_completed-meta", "Year Completed", array($this, ‘year_completed’), "gallery", "side", "low");
add_meta_box("credits_meta", "Design &amp; Build Credits", array($this, ‘credits_meta’), "gallery", "normal", "low");
}

function year_completed(){
global $post;
$custom = get_post_custom($post->ID);
$year_completed = $custom["year_completed"][0];
echo ‘<label>Year:</label>';
echo ‘<input type="text" name="year_completed" value="’.$year_completed.’" />';
}

function credits_meta() {
global $post;
$custom = get_post_custom($post->ID);
$designers = $custom["designers"][0];
$developers = $custom["developers"][0];
$producers = $custom["producers"][0];

echo ‘<p><label>Designed By:</label><br />';
echo ‘<textarea cols="50" rows="5" name="designers">’.$designers.'</textarea></p>';
echo ‘<p><label>Built By:</label><br />';
echo ‘<textarea cols="50" rows="5" name="developers">’.$developers.'</textarea></p>';
echo ‘<p><label>Produced By:</label><br />';
echo ‘<textarea cols="50" rows="5" name="producers">’.$producers.'</textarea></p>';

}

function save_details(){
global $post;
update_post_meta($post->ID, "year_completed", $_POST["year_completed"]);
update_post_meta($post->ID, "designers", $_POST["designers"]);
update_post_meta($post->ID, "developers", $_POST["developers"]);
update_post_meta($post->ID, "producers", $_POST["producers"]);
}

function register_gallery_posttype()
{
$labels = array(
‘name’ => _x(‘Pondol Gallery’, ‘post type general name’),
‘singular_name’ => _x(‘Gallery Item’, ‘post type singular name’),
‘add_new’ => _x(‘Add New’, ‘portfolio item’),
‘add_new_item’ => __(‘Add New Gallery Item’),
‘edit_item’ => __(‘Edit Gallery Item’),
‘new_item’ => __(‘New Gallery Item’),
‘view_item’ => __(‘View Gallery Item’),
‘search_items’ => __(‘Search Gallery’),
‘not_found’ => __(‘Nothing found’),
‘not_found_in_trash’ => __(‘Nothing found in Trash’),
‘parent_item_colon’ => ”
);

$args = array(
‘labels’ => $labels,
‘public’ => true,
‘publicly_queryable’ => true,
‘show_ui’ => true,
‘query_var’ => true,
‘menu_icon’ => PONDOLPLUGIN_GALLERY_URL . ‘assets/images/pondol-16.png’,
‘rewrite’ => true,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ => null,
‘supports’ => array(‘title’,’editor’,’thumbnail’)
);

register_post_type( ‘gallery’ , $args );
flush_rewrite_rules();
}

function register_gallery_taxonomies(){
register_taxonomy("pondol_gallery_category", array("gallery"), array("hierarchical" => true, "label" => "Category", "singular_label" => "Category", "rewrite" => true));
}
}

/**
* Init the plugin
*/
$gallery = new PondolPlugin_Gallery_Plugin();
[/php]

Custom Post Type 만들기 1

참조 : http://blog.teamtreehouse.com/create-your-first-wordpress-custom-post-type
오늘부터 연재할 내용은 custom post type입니다.
겔러리라 간단한 상품등을 디스플레이 하기 위해서 사용하는 것인데 쉽게말하면 현재 워드프레스의 글쓰기의 주 메뉴를 사용자에 맞게 새로 customize하는 것입니다.

기본적으로 블로그 글을 쓸때는 post type이 post 이고 페이지 를 사용할때는 post type이 “page”입니다.
이것과 관련한 데이타는 “wp_posts”에 저장이 되는데 “post_type”이라는 필드가 이런 속성을 가집니다.

쇼핑몰 플러그인중 유명한 woocommerce는 post_type으로 “product”를 사용합니다.
1 : register_post_type : 신규 포스트타입을 설정한다. 이부분은 글 작성시 wp_posts 의 post_type에 들어간다.
2 : register_taxonomy : 현재 포스트타입의 하위 카테고리를 등록하고 싶을때 사용할 수 있다.
가령 register_post_type를 gallery라고 하면 register_taxonomy 에서는 gallery를 하위 카테고리 예를 들어, 개구리, 잠자리, 등등을 등록하는 폼입니다.

[php]

<?php
/*
Plugin Name: Pondol Plugin Gallery
Plugin URI:
Description: General Gallery Program
Author: Pondol
Version: 1.0
Author URI: http://www.shop-wiz.com
License: GPL2

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/

define(‘PONDOLPLUGIN_GALLERY_VERSION’, ‘1.0’);
define(‘PONDOLPLUGIN_GALLERY_URL’, plugin_dir_url( __FILE__ ));
define(‘PONDOLPLUGIN_GALLERY_PATH’, plugin_dir_path( __FILE__ ));

class PondolPlugin_Gallery_Plugin {
function __construct() {
$this->init();
}

public function init() {

add_action( ‘init’, array($this, ‘register_gallery_posttype’));
add_action( ‘init’, array($this, ‘register_gallery_taxonomies’));

if ( is_admin() )
{
//add_action( ‘wp_ajax_pondolplugin_board_save_item’, array($this, ‘wp_ajax_save_item’) );
//add_action( ‘admin_init’, array($this, ‘admin_init_hook’) );

}

}
function register_gallery_posttype()
{
$labels = array(
‘name’ => _x(‘Pondol Gallery’, ‘post type general name’),
‘singular_name’ => _x(‘Gallery Item’, ‘post type singular name’),
‘add_new’ => _x(‘Add New’, ‘portfolio item’),
‘add_new_item’ => __(‘Add New Gallery Item’),
‘edit_item’ => __(‘Edit Gallery Item’),
‘new_item’ => __(‘New Gallery Item’),
‘view_item’ => __(‘View Gallery Item’),
‘search_items’ => __(‘Search Gallery’),
‘not_found’ => __(‘Nothing found’),
‘not_found_in_trash’ => __(‘Nothing found in Trash’),
‘parent_item_colon’ => ”
);

$args = array(
‘labels’ => $labels,
‘public’ => true,
‘publicly_queryable’ => true,
‘show_ui’ => true,
‘query_var’ => true,
‘menu_icon’ => PONDOLPLUGIN_GALLERY_URL . ‘assets/images/pondol-16.png’,
‘rewrite’ => true,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ => null,
‘supports’ => array(‘title’,’editor’,’thumbnail’)
);

register_post_type( ‘gallery’ , $args );
}

function register_gallery_taxonomies(){
/*
* * @param string $taxonomy Taxonomy key, must not exceed 32 characters.
* @param array|string $object_type Name of the object type for the taxonomy object.
* @param array|string $args See optional args description above.

function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
*/
register_taxonomy("pondol_gallery_category", array("gallery"), array("hierarchical" => true, "label" => "Category", "singular_label" => "Category", "rewrite" => true));
}
}

/**
* Init the plugin
*/
$gallery = new PondolPlugin_Gallery_Plugin();
[/php]

이렇게 하면 간단한 사용자 정의 post를 만들 수 있습니다.

만약 만든 후 저장 후에도 링크가 제대로 활성화되지 않으면(사용자 단에서 not found)가 뜨면
[설정] – [고유주소]에서 새로 저장해 보시기 바랍니다.

다음장에서는 현재 만들어진 custom type에다가 추가적인 내용을 디스플레이 하도록 처리하겠습니다.

svn에 파일 올리기(콘솔상에서 처리할 경우)

1) 현재의 모든 내용 받기
svn co http://plugins.svn.wordpress.org/pondol-widget-visitor-stats/ pondol-widget-visitor-stats
[root@localhost wp]# svn co http://plugins.svn.wordpress.org/pondol-widget-visitor-stats/ pondol-widget-visitor-stats
A pondol-widget-visitor-stats/tags
A pondol-widget-visitor-stats/assets
A pondol-widget-visitor-stats/trunk
A pondol-widget-visitor-stats/branches
Checked out revision 923511.

2) svn에 올릴 파일을 trunk 폴더로 복사
[root@localhost pondol-widget-visitor-stats]# cp -Rf ~winkzone/public_html/wordpress/wp-content/plugins/pondolwidget-visitorstats/* trunk/

3) svn 서버로 현재 파일 업로드
[root@localhost pondol-widget-visitor-stats]# svn add trunk/*

4) 실제적인업로드 (이때 패스워드는 현재 유저의 패스워드를 묻는데 svn 유저와 현재 로그인 유저가 다를 경우 enter 키를 한번 누르면 loing id를 묻는 콘솔에서 시작할 수 있다.
[root@localhost pondol-widget-visitor-stats]# svn ci -m ‘Adding first version of my plugin’

admin 단에 pagination 달기

참조  : http://stackoverflow.com/questions/5322266/add-pagination-in-wordpress-admin-in-my-own-customized-plugin
아래 소스를 바로 펼쳐 보이겠습니다.

[php]
$pagenum = isset( $_GET[‘pagenum’] ) ? absint( $_GET[‘pagenum’] ) : 1;

$limit = 10; // number of rows in page
$offset = ( $pagenum – 1 ) * $limit;

$total = $wpdb->get_var( "SELECT COUNT(`id`) FROM TABLE_NAME " );
$num_of_pages = ceil( $total / $limit );

$page_links = paginate_links( array(
‘base’ => add_query_arg( ‘pagenum’, ‘%#%’ ),
‘format’ => ”,
‘prev_text’ => __( ‘&laquo;’, ‘text-domain’ ),
‘next_text’ => __( ‘&raquo;’, ‘text-domain’ ),
‘total’ => $num_of_pages,
‘current’ => $pagenum
) );
echo "start…1";
if ( $page_links ) {
echo ‘<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">’ . $page_links . ‘</div></div>';
}

$message_rows = $wpdb->get_results( "SELECT * FROM TABLE_NAME limit ".$offset.", 10" );

[/php]

플러그인에서 미디어업로더 사용하기

참조 : http://mikejolley.com/2012/12/using-the-new-wordpress-3-5-media-uploader-in-plugins/

플러그인에서 미디어업로더는 다음단계로 진행된다.

1. “미디어 업로더 창 오픈 버튼”
[javascript]
// Uploading files
var file_frame;

jQuery(‘.upload_image_button’).live(‘click’, function( event ){

event.preventDefault();

// If the media frame already exists, reopen it.
if ( file_frame ) {
file_frame.open();
return;
}

// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: jQuery( this ).data( ‘uploader_title’ ),
button: {
text: jQuery( this ).data( ‘uploader_button_text’ ),
},
multiple: false // Set to true to allow multiple files to be selected
});

// When an image is selected, run a callback.
file_frame.on( ‘select’, function() {
// We set multiple to false so only get one image from the uploader
attachment = file_frame.state().get(‘selection’).first().toJSON();

// Do something with attachment.id and/or attachment.url here
});

// Finally, open the modal
file_frame.open();
});
[/javascript]
* 미디어업로드 창에서 멀티 선택이 가능하게 하려면 상기 스크립트를 아래와 같이 변경한다.
[javascript]
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: jQuery( this ).data( ‘uploader_title’ ),
button: {
text: jQuery( this ).data( ‘uploader_button_text’ ),
},
multiple: true // Set to true to allow multiple files to be selected
});
[/javascript]

2. 미디어 업로드 창에서 미디어파일을 선택한 후 “Choose Image”를 선택했을 경우 아래와 같이 처리하면 된다.
[javascript]
// When an image is selected, run a callback.
file_frame.on( ‘select’, function() {

var selection = file_frame.state().get(‘selection’);

selection.map( function( attachment ) {

attachment = attachment.toJSON();

// 이곳에서 받은 결과 값으로 다양한 액션을 취하면 된다.
//받을 수 있는 인자값은 아래 별도로 설명해 두겠습니다.
});
});
[/javascript]

* 미디어 업로드 창에서 리턴되는 (attachment ) 값
attachment.id;
attachment.link;
attachment.sizes
attachment.sizes.thumbnail
attachment.sizes.thumbnail.url

attachment.sizes.medium
attachment.sizes.medium.url

attachment.url;
attachment.title;
attachment.description;
……..

상기처럼 처리하면 모든 연동은 끝납니다.