Thứ Ba, 22 tháng 3, 2011

WordPress Tut – Viết WP Plugin

WordPress Tut – Viết WP Plugin

* January 3, 2011
* 22 comments

Trước đây tôi có làm một Video Series về tạo WordPress Theme, trong series lần này chúng ta sẽ học cách tạo WordPress Plugin và Widget. Tại sao chúng ta phải tạo Plugin khi mà WordPress đã có rất nhiều Plugin miễn phí?

Câu trả lời có thể là chúng ta chỉ muốn biết cách tạo ra một Plugin như thế nào. Hoặc những Plugin miễn phí không thỏa mãn những yêu cầu của bạn về một Plugin. Cho dù mục đích của bạn là như thế nào đi chăng nữa, thì việc học cách tạo một Plugin cho WordPress không khó như bạn tưởng. Trong video này tôi sẽ hướng dẫn bạn những bước cơ bản nhất để tạo ra một WordPress Plugin từ vạch xuất phát.

Thời lượng: 26:30

Download định dạng .mp4 chất lượng cao :Mediafire

Dung lượng: 34 MB/ phần

Link trong Video: Adam Brown
Mô hình Action và Filter hook của WordPress
wordpress plugin development
Những Filter hooks phổ biến

* the_content: thay đổi nội dung của post hoặc page trước khi hiển thị nó.
* the_content_rss: thay đổi nội dung của post hoặc page cho RSS.
* the_title: thay đổi nội dung tiêu đề của post hoặc page trước khi hiển thị nó.
* comment_text: thay đổi nội dung của comment trước khi hiển thị nó.
* wp_title: thay đổi nội dung của thẻ trước khi hiển thị nó.<br /> * get_categories: thay đổi nội dung của list tạo ra bởi hàm get_categories.<br /> * the_permalink: thay đổi cấu trúc URL của đường liên kết.<br /> <br /> Những Action hooks phổ biến<br /> <br /> * publish_post: gọi hàm khi bạn tạo một post mới.<br /> * create_categories: gọi hàm khi một Category mới được tạo.<br /> * switch_theme: gọi hàm khi thay đổi theme.<br /> * admin_head: gọi hàm trong thẻ <head> của trang Admin.<br /> * wp_head: gọi hàm trong thẻ <head> của theme.<br /> * wp_footer: gọi hàm dưới phần footer của trang, thường nằm trên thẻ </body>.<br /> * init: gọi hàm sau khi WordPress đã tải xong nội dung, nhưng trước khi nó gửi ra headers. Thường được dùng để tương tác với $_GET hoặc $_POST.<br /> * admin_init: giống với init nhưng chỉ áp dụng với trang admin.<br /> * user_register: gọi hàm khi có người đăng ký thành viên.<br /> * comment_post: gọi hàm khi có người post comment.<br /> <br /> post image <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> Người đăng: <span class='fn'>nicker</span> </span> <span class='post-timestamp'> vào lúc <a class='timestamp-link' href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html' rel='bookmark' title='permanent link'><abbr class='published' title='2011-03-22T01:15:00-07:00'>01:15</abbr></a> </span> <span class='post-comment-link'> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post.g?blogID=6329216023943961663&postID=933036752612232446' title='Gửi Bài đăng qua email'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-780458956'> <a href='https://www.blogger.com/post-edit.g?blogID=6329216023943961663&postID=933036752612232446&from=pencil' title='Sửa Bài đăng'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6329216023943961663&postID=933036752612232446&target=email' target='_blank' title='Gửi email bài đăng này'><span class='share-button-link-text'>Gửi email bài đăng này</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6329216023943961663&postID=933036752612232446&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6329216023943961663&postID=933036752612232446&target=twitter' target='_blank' title='Chia sẻ lên X'><span class='share-button-link-text'>Chia sẻ lên X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6329216023943961663&postID=933036752612232446&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Chia sẻ lên Facebook'><span class='share-button-link-text'>Chia sẻ lên Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6329216023943961663&postID=933036752612232446&target=pinterest' target='_blank' title='Chia sẻ lên Pinterest'><span class='share-button-link-text'>Chia sẻ lên Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'><span class='post-location'> </span> </div> </div> </div> <div class='comments' id='comments'> <a name='comments'></a> <h4>Không có nhận xét nào:</h4> <div id='Blog1_comments-block-wrapper'> <dl class='avatar-comment-indent' id='comments-block'> </dl> </div> <p class='comment-footer'> <div class='comment-form'> <a name='comment-form'></a> <h4 id='comment-post-message'>Đăng nhận xét</h4> <p> </p> <a href='https://www.blogger.com/comment/frame/6329216023943961663?po=933036752612232446&hl=vi' id='comment-editor-src'></a> <iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410px' id='comment-editor' name='comment-editor' src='' width='100%'></iframe> <script src='https://www.blogger.com/static/v1/jsbin/2315299244-comment_from_post_iframe.js' type='text/javascript'></script> <script type='text/javascript'> BLOG_CMT_createIframe('https://www.blogger.com/rpc_relay.html'); </script> </div> </p> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-cat-ngan-post-nhieu-noi-dung.html' id='Blog1_blog-pager-newer-link' title='Bài đăng Mới hơn'>Bài đăng Mới hơn</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-shortcode.html' id='Blog1_blog-pager-older-link' title='Bài đăng Cũ hơn'>Bài đăng Cũ hơn</a> </span> <a class='home-link' href='http://nicker-webzoo.blogspot.com/'>Trang chủ</a> </div> <div class='clear'></div> <div class='post-feeds'> <div class='feed-links'> Đăng ký: <a class='feed-link' href='http://nicker-webzoo.blogspot.com/feeds/933036752612232446/comments/default' target='_blank' type='application/atom+xml'>Đăng Nhận xét (Atom)</a> </div> </div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> <div class='sidebar section' id='sidebar-right-1'><div class='widget PageList' data-version='1' id='PageList1'> <h2>Trang</h2> <div class='widget-content'> <ul> <li> <a href='http://nicker-webzoo.blogspot.com/'>Trang chủ</a> </li> <li> <a href='http://nicker-webzoo.blogspot.com/p/about-me.html'>About me</a> </li> </ul> <div class='clear'></div> </div> </div></div> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot section' id='footer-1'><div class='widget LinkList' data-version='1' id='LinkList1'> <h2>Webmasterpages</h2> <div class='widget-content'> <ul> <li><a href='http://www.izwebz.com'>video</a></li> </ul> <div class='clear'></div> </div> </div><div class='widget Followers' data-version='1' id='Followers1'> <h2 class='title'>Người theo dõi</h2> <div class='widget-content'> <div id='Followers1-wrapper'> <div style='margin-right:2px;'> <div><script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <div id="followers-iframe-container"></div> <script type="text/javascript"> window.followersIframe = null; function followersIframeOpen(url) { gapi.load("gapi.iframes", function() { if (gapi.iframes && gapi.iframes.getContext) { window.followersIframe = gapi.iframes.getContext().openChild({ url: url, where: document.getElementById("followers-iframe-container"), messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { '_ready': function(obj) { window.followersIframe.getIframeEl().height = obj.height; }, 'reset': function() { window.followersIframe.close(); followersIframeOpen("https://www.blogger.com/followers/frame/6329216023943961663?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByNmZmVlZGQiByNmZmNjNzcqC3RyYW5zcGFyZW50MgcjZmZmZmZmOgcjZmZlZWRkQgcjZmZjYzc3SgcjOTk4ODc3UgcjZmZjYzc3Wgt0cmFuc3BhcmVudA%3D%3D\x26pageSize\x3d21\x26hl\x3dvi\x26origin\x3dhttp://nicker-webzoo.blogspot.com"); }, 'open': function(url) { window.followersIframe.close(); followersIframeOpen(url); }, 'blogger-ping': function() { } } }); } }); } followersIframeOpen("https://www.blogger.com/followers/frame/6329216023943961663?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByNmZmVlZGQiByNmZmNjNzcqC3RyYW5zcGFyZW50MgcjZmZmZmZmOgcjZmZlZWRkQgcjZmZjYzc3SgcjOTk4ODc3UgcjZmZjYzc3Wgt0cmFuc3BhcmVudA%3D%3D\x26pageSize\x3d21\x26hl\x3dvi\x26origin\x3dhttp://nicker-webzoo.blogspot.com"); </script></div> </div> </div> <div class='clear'></div> </div> </div></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot section' id='footer-2-1'><div class='widget Profile' data-version='1' id='Profile1'> <h2>Giới thiệu về tôi</h2> <div class='widget-content'> <a href='https://www.blogger.com/profile/09417237360865257572'><img alt='Ảnh của tôi' class='profile-img' height='80' src='//3.bp.blogspot.com/-Ruc0ULTBUP8/TYhdKsDCJkI/AAAAAAAAArw/RY7PLm7xXA0/s80/P2280869.JPG' width='60'/></a> <dl class='profile-datablock'> <dt class='profile-data'> <a class='profile-name-link g-profile' href='https://www.blogger.com/profile/09417237360865257572' rel='author' style='background-image: url(//www.blogger.com/img/logo-16.png);'> nicker </a> </dt> </dl> <a class='profile-link' href='https://www.blogger.com/profile/09417237360865257572' rel='author'>Xem hồ sơ hoàn chỉnh của tôi</a> <div class='clear'></div> </div> </div></div> </td> <td class='columns-cell'> <div class='foot section' id='footer-2-2'><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Lưu trữ Blog</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='http://nicker-webzoo.blogspot.com/2011/'> 2011 </a> <span class='post-count' dir='ltr'>(108)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://nicker-webzoo.blogspot.com/2011/04/'> tháng 4 </a> <span class='post-count' dir='ltr'>(7)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='http://nicker-webzoo.blogspot.com/2011/03/'> tháng 3 </a> <span class='post-count' dir='ltr'>(101)</span> <ul class='posts'> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/webzoo-glossy-beveled-buttons-photoshop.html'>webzoo: Glossy & Beveled Buttons – Photoshop Tutorial</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/guest-post-5-useful-coding-solutions.html'>Guest Post – 5 Useful Coding Solutions Part 2</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/js_9009.html'>JS测试显示器分辨率</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/js_22.html'>JS测试显示器分辨率</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/js.html'>网页标题随机显示名言JS代码</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/404.html'>泪流满面的404页面</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/blog-post_8101.html'>如何去掉超链接的下划线?</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/blog-post_22.html'>从右往左读的文字正写竖排效果</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/div.html'>div的内容图片垂直居中代码(兼容多浏览器)</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/firefox.html'>强制Firefox显示滚动条</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css.html'>纯css的防止图片撑破页面的代码(图片自动缩放)</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/blog-post.html'>网站变灰代码</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/divinput-ie6firefox.html'>DIV实现input垂直居中 兼容IE6和Firefox</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/ie6ie7firefoxcss.html'>兼容ie6,ie7以及firefox的css透明滤镜</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/ie6firefoxpngcss.html'>兼容IE6和Firefox的PNG背景透明CSS代码</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/have-fun-w-borders-beveled-pressed-more.html'>Have Fun w/ Borders – Beveled, Pressed, & More!</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/popout-details-on-hover-w-css.html'>Popout Details on Hover w/ CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/advanced-columns-using-nth-childn.html'>Advanced Columns using the :nth-child(N)</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/sticky-sidenav-layout-with-css.html'>Sticky SideNav Layout with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/guest-post-creating-image-rotator.html'>Guest Post – Creating an Image Rotator</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/simple-page-peel-effect-with-jquery-css.html'>Simple Page Peel Effect with jQuery & CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/facebook-style-footer-admin-panel-part_22.html'>Facebook Style Footer Admin Panel Part 1</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/facebook-style-footer-admin-panel-part.html'>Facebook Style Footer Admin Panel Part 2</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/automatic-image-slider-w-css-jquery.html'>Automatic Image Slider w/ CSS & jQuery</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/simple-tabs-w-css-jquery.html'>Simple Tabs w/ CSS & jQuery</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/how-to-override-inline-styles-with.html'>How to Override Inline Styles with Style Sheet</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/png-transparency-fix-in-ie6.html'>PNG Transparency Fix in IE6</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/glossy-beveled-buttons-photoshop.html'>Glossy & Beveled Buttons – Photoshop Tutorial</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/liquid-color-adjustable-css-buttons.html'>Liquid & Color Adjustable CSS Buttons</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/cropping-backgrounds-of-vehicles.html'>Cropping Backgrounds of Vehicles</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/cross-browser-css-fixes-tools-and-hacks.html'>Cross Browser CSS Fixes, Tools, and Hacks</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/embedding-styling-xhtml-youtube-code.html'>Embedding & Styling XHTML YouTube Code</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/liquid-fixed-two-column-lists-with-css.html'>Liquid + Fixed Two Column Lists with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/debugging-css-plan-of-attack.html'>Debugging CSS – The Plan of Attack</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/using-print-stylesheets-effectively.html'>Using Print Stylesheets Effectively</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/create-simple-templates-using-php.html'>Create Simple Templates Using PHP</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/multiple-image-viewer-w-thumbnails.html'>Multiple Image Viewer w/ Thumbnails</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/styling-your-search-form-with-css.html'>Styling Your Search Form with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/achieving-double-background-effect-with.html'>Achieving Double Background Effect with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/quick-and-dirty-site-down-page-with-css.html'>Quick and Dirty “Site Down” Page with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/5-ways-to-spice-up-your-images-with-css.html'>5 Ways to Spice up Your Images with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/protect-your-images-with-css-watermarks.html'>Protect Your Images with CSS Watermarks</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/beginners-checklist-before-debugging.html'>Beginner’s Checklist Before Debugging CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-vertical-navigation-with-teaser.html'>CSS Vertical Navigation with Teaser</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/spice-up-your-fonts-customizing-w-sifr.html'>Spice up Your Fonts – Customizing w/ sIFR</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/inline-modal-window-w-css-and-jquery.html'>Inline Modal Window w/ CSS and jQuery</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/two-simple-ways-to-vertically-align.html'>Two Simple Ways to Vertically Align with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-on-hover-image-captions.html'>CSS On-Hover Image Captions</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/avoiding-excess-margin-on-repeating.html'>Avoiding Excess Margin on Repeating Columns</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/table-of-contents-style-layout-with-css.html'>Table of Contents Style Layout with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/fixed-footer-backgrounds-with-css.html'>Fixed Footer Backgrounds with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/sexy-ordered-lists-with-css.html'>Sexy Ordered Lists with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/styling-code-snippets-with-css.html'>Styling Code Snippets with CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/achieving-liquid-backgrounds-with-fixed.html'>Achieving Liquid Backgrounds with Fixed Content</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/5-step-style-sheet-weight-loss-program.html'>5 Step Style Sheet Weight Loss Program</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/correcting-center-aligned-background.html'>Correcting the Center Aligned Background Bug</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/simple-toggle-with-css-jquery.html'>Simple Toggle with CSS & jQuery</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/tips-for-developing-semi-liquid-layouts.html'>Tips for Developing Semi-Liquid Layouts</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/new-to-jquery-dont-be-scurred.html'>New to jQuery? Don’t be Scurred…</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-beginners-dos-and-donts-part-1.html'>CSS Beginners Do’s and Dont’s Part 1</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-beginners-dos-and-donts-part-2.html'>CSS Beginners Do’s and Dont’s Part 2</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/active-state-in-css-navigations.html'>“Active” State in CSS Navigations</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/correcting-orphans-w-overflow.html'>Correcting Orphans w/ Overflow</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/simple-accordion-w-css-and-jquery.html'>Simple Accordion w/ CSS and jQuery</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-sprites-wout-using-background.html'>CSS Sprites w/out Using Background Images</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/how-many-layers-are-in-my-photoshop.html'>How many layers are in my Photoshop document?</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/testing-landscape-app-interfaces.html'>Testing landscape app interfaces</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/setting-up-photoshop-for-web-and-ios.html'>Setting up Photoshop for web and iOS development</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/photoshop-roundrect-roundup.html'>Photoshop roundrect roundup</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/what-to-do-with-all-those-extra-pixels.html'>What to do with all those extra pixels?</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/iphone-4-without-queue.html'>An iPhone 4, without the queue</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/ipad-images.html'>iPad images</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/photoshop-cs6-wish-list.html'>Photoshop CS6 wish list</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/new-drobo-dashboard-icon.html'>A new Drobo Dashboard icon</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/designing-for-retina-display-part-two.html'>Designing for Retina display, part two</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/designing-for-retina-display.html'>Designing for Retina display</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/gradients.html'>Gradients</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/pixel-perfect-vector-nudging.html'>Pixel perfect vector nudging</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/pixel-perfect-vector-pasting.html'>Pixel perfect vector pasting</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/pixel-perfect-rotation.html'>Pixel perfect rotation</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/noise-and-textures.html'>Noise and textures</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/noise-texture-in-photoshop.html'>Noise Texture in Photoshop</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/mastering-css-getting-started-guest.html'>Mastering CSS : Getting Started – Guest Post</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/css-selectors-phan-2.html'>CSS Selectors (Phần 2)</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/custome-style-voi-php-va-css.html'>Custome Style với PHP và CSS</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/gioi-thieu-960-grid-css-framework.html'>Giới thiệu 960 Grid – CSS Framework</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/nhung-website-giup-ban-hoc-css-tot-hon.html'>Những website giúp bạn học css tốt hơn</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/custom-widget-wordpress-tut.html'>Custom Widget – WordPress Tut</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/jquery-ajax-random-post.html'>jQuery AJAX – Random Post</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-plugin-ngon-ngu.html'>WordPress Plugin – Đa ngôn ngữ</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-custom-taxonomies.html'>WordPress – Custom Taxonomies</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-cat-ngan-post-nhieu-noi-dung.html'>WordPress – Cắt ngắn post nhiều nội dung</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html'>WordPress Tut – Viết WP Plugin</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-shortcode.html'>WordPress Tut – Shortcode</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-custom-post-type.html'>WordPress – Custom Post Type</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/wordpress-post-thumbnail.html'>WordPress – Post Thumbnail</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/10-ly-do-ban-nen-su-dung-wordpress.html'>10 lý do bạn nên sử dụng WordPress</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/gioi-thieu-wordpress.html'>Giới thiệu WordPress</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/kiem-tien-tren-mang-voi-google-adsense.html'>Kiếm tiền trên mạng với Google Adsense</a></li> <li><a href='http://nicker-webzoo.blogspot.com/2011/03/japan-quake-live-blog-us-considering.html'>Japan quake live blog: U.S. considering evacuation...</a></li> </ul> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Chủ đề Hình mờ. Được tạo bởi <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script src='http://www.assoc-amazon.com/s/link-enhancer?tag=nicker&o=1' type='text/javascript'></script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/984859869-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY5XJ50aoeF_XuuoN4EcVY6OAliCdA:1731926566181';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6329216023943961663','//nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html','6329216023943961663'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6329216023943961663', 'title': 'webzoo', 'url': 'http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html', 'canonicalUrl': 'http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html', 'homepageUrl': 'http://nicker-webzoo.blogspot.com/', 'searchUrl': 'http://nicker-webzoo.blogspot.com/search', 'canonicalHomepageUrl': 'http://nicker-webzoo.blogspot.com/', 'blogspotFaviconUrl': 'http://nicker-webzoo.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'vi', 'localeUnderscoreDelimited': 'vi', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22webzoo - Atom\x22 href\x3d\x22http://nicker-webzoo.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22webzoo - RSS\x22 href\x3d\x22http://nicker-webzoo.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22webzoo - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/6329216023943961663/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22webzoo - Atom\x22 href\x3d\x22http://nicker-webzoo.blogspot.com/feeds/933036752612232446/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/51f2c5635a23dea1', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Nh\u1eadn \u0111\u01b0\u1eddng li\xean k\u1ebft', 'key': 'link', 'shareMessage': 'Nh\u1eadn \u0111\u01b0\u1eddng li\xean k\u1ebft', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Chia s\u1ebb v\u1edbi Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Chia s\u1ebb v\u1edbi X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Chia s\u1ebb v\u1edbi Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27vi\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': '\u0110\u1ecdc th\xeam', 'pageType': 'item', 'postId': '933036752612232446', 'pageName': 'WordPress Tut \u2013 Vi\u1ebft WP Plugin', 'pageTitle': 'webzoo: WordPress Tut \u2013 Vi\u1ebft WP Plugin'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Ch\u1ec9nh s\u1eeda', 'linkCopiedToClipboard': '\u0110\xe3 sao ch\xe9p \u0111\u01b0\u1eddng li\xean k\u1ebft v\xe0o b\u1ea3ng nh\u1edb t\u1ea1m!', 'ok': 'Ok', 'postLink': 'Li\xean k\u1ebft b\xe0i \u0111\u0103ng'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'T\xf9y ch\u1ec9nh', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true, 'variant': 'navigator', 'variantId': 'navigator'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'WordPress Tut \u2013 Vi\u1ebft WP Plugin', 'description': 'WordPress Tut \u2013 Vi\u1ebft WP Plugin * January 3, 2011 * 22 comments Tr\u01b0\u01a1\u0301c \u0111\xe2y t\xf4i co\u0301 la\u0300m m\xf4\u0323t Video Series v\u1ec1 t\u1ea1o WordPress Theme...', 'url': 'http://nicker-webzoo.blogspot.com/2011/03/wordpress-tut-viet-wp-plugin.html', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 933036752612232446}}]); _WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ImageView', new _WidgetInfo('Image1', 'crosscol', document.getElementById('Image1'), {'resize': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/2494029944-lbx__vi.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PageListView', new _WidgetInfo('PageList1', 'sidebar-right-1', document.getElementById('PageList1'), {'title': 'Trang', 'links': [{'isCurrentPage': false, 'href': 'http://nicker-webzoo.blogspot.com/', 'title': 'Trang ch\u1ee7'}, {'isCurrentPage': false, 'href': 'http://nicker-webzoo.blogspot.com/p/about-me.html', 'id': '1907692334917466562', 'title': 'About me'}], 'mobile': false, 'showPlaceholder': true, 'hasCurrentPage': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LinkListView', new _WidgetInfo('LinkList1', 'footer-1', document.getElementById('LinkList1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_FollowersView', new _WidgetInfo('Followers1', 'footer-1', document.getElementById('Followers1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'footer-2-1', document.getElementById('Profile1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'footer-2-2', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': '\u0110ang t\u1ea3i\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>