properties - thuộc tính:
- length: lấy chiều dài của chuỗi
var txt = "Hello World!";
alert(txt.length);
Methods - Phương thức:
charAt(): trả ký tự ở 1 vị trí trong chuỗi
var str = "Hello world!";
document.write("First character: " + str.charAt(0) + "<br />"); //First character: H
document.write("Last character: " + str.charAt(str.length-1)); // document.write("Last character: " + str.charAt(str.length-1))
charCodeAt(): trả về mã Unicode của ký tự
var str = "Hello world!";
document.write("First character: " + str.charCodeAt(0) + "<br />");
document.write("Last character: " + str.charCodeAt(str.length-1));
concat(): nối nhiều chuỗi lại thành 1 chuỗi lớn
var str1="Hello ";
var str2="world!";
document.write(str1.concat(str2));
fromCharCode(): chuyễn mã Unicode thành ký tự
document.write(String.fromCharCode(72,69,76,76,79) );//HELLO
indexOf(): vị trí đầu tiên của ký tự trong chuỗi, và -1 nếu ký tự không nằm trong chuỗi
var str="Hello world!";
document.write(str.indexOf("Hello") + "<br />");//0
document.write(str.indexOf("WORLD") + "<br />");//-1
document.write(str.indexOf("world"));//6
lastIndexOf():vị trí cuối cùng của ký tự trong chuỗi, và -1 nếu ký tự không nằm trong chuỗi
match(): trả về thông tin giống nhau giữa 1 biểu thức so mẫu và chuỗi
var str="The rain in SPAIN stays mainly in the plain";
var patt1=/ain/gi;
document.write(str.match(patt1)); //ain,AIN,ain,ain
replace(): thay thế tin giống nhau giữa 1 biểu thức so mẫu và chuỗi
var str="Visit Microsoft!";
document.write(str.replace("Microsoft", "W3Schools"));//Visit W3Schools!
search(): trả về vị trí giống nhau giữa 1 biểu thức so mẫu và chuỗi
var str="Visit W3Schools!";
document.write(str.search("W3SCHOOLS"));//-1
slice(): tách 1 phần của 1 chuỗi thành chuỗi mới
var str="Hello happy world!";
// extract all characters, start at position 0:
document.write(str.slice(0)+"<br />"); //Hello happy world!
// extract all characters, start at position 6:
document.write(str.slice(6)+"<br />"); //happy world!
// extract from the end of the string, and to position -6:
document.write(str.slice(-6)+"<br />");//world!
// extract only the first character:
document.write(str.slice(0,1)+"<br />");//H
// extract the characters from position 6 to position 11:
document.write(str.slice(6,11)+"<br />");//happy
split(): tách 1 chuỗi thành 1 mảng với mỗi phần tử là các chuỗi con
var str="How are you doing today?";
document.write(str.split() + "<br />");//How are you doing today?
document.write(str.split(" ") + "<br />");//How,are,you,doing,today?
document.write(str.split("") + "<br />");//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
document.write(str.split(" ",3));//How,are,you
substr(): cắt 1 số ký tự ra khỏi chuỗi lớn dựa 1 điểm bắt đầu và số ký tự cần lấy
var str="Hello world!";
document.write(str.substr(3)+"<br />"); //lo world!
document.write(str.substr(3,4));//lo w
substring(): tách 1 chuỗi ra khỏi chuỗi lớn ở khoảng giữa 2 chữ số
var str="Hello world!";
document.write(str.substring(3)+"<br />");//lo world!
document.write(str.substring(3,7));//lo w
toLowerCase(): chuyển 1 chuỗi sang chữ thường
var str="Hello World!";
document.write(str.toLowerCase());
toUpperCase(): chuyển 1 chuỗi sang chữ hoa
var str="Hello world!";
document.write(str.toUpperCase());
valueOf() : trả về giá trị của đối tượng
var str="Hello world!";
document.write(str.valueOf()); //Hello world!
Nguồn: phpbasic
Thứ Hai, 24 tháng 11, 2014
Thứ Bảy, 13 tháng 9, 2014
Không hiển thị 1 nhãn trên trang chủ
Chúng ta đều biết Blogger đã có tính năng tạo trang tĩnh (static_page) giúp người dùng tạo các trang chuyên biệt như trang giới thiệu (About), trang liên hệ (Contact)… Đặc trưng của các trang tĩnh là không được duyệt hiển thị trên trang chính (kiểu trang index gồm trang chủ, trang nhãn và trang lưu trữ). Tuy nhiên Blogger giới hạn số trang tĩnh tối đa được tạo cho mỗi blogspot là 20 trang. Dường như con số này quá khiêm tốn so với nhu cầu sử dụng của bạn. Nào là trang nén CSS, trang mã hóa, trang mã màu, trang liên kết, trang sản phẩm, trang dịch vụ, trang diễn đàn, trang liên hệ, trang giới thiệu, trang góp ý, trang lưu bút … Tính ngót ra cũng đến trên dưới hai chục trang như vậy. Thế thì làm sao để thỏa mãn nhu cầu tạo trang riêng biệt như thế.
Bạn có thể xem DEMO (Chú ý ở tiện ích Recent Posts có hiển thị 2 bài viết đầu tiên thuộc 1 nhãn song đến trang chủ thì không nhìn thấy chúng nữa).
Lời giải đáp lại đụng đến các lệnh điều kiện trong cấu trúc XML của Template. Ở đây mình sẽ gán một nhãn chung cho các bài viết được dùng để tạo trang riêng biệt giống trang tĩnh, ví dụ tên nhãn làHiddenLabel. Nào chúng ta hãy bắt đầu thực hiện như sau:
» Cách 1: Ẩn bài viết thuộc nhãn nhất định ở kiểu trang index!
1. Đăng nhập vào tài khoản Blogger
2. Vào phần Mẫu (Template)
3. Chọn chỉnh sửa HTML (Edit HTML)
4. Tìm thẻ sau:
2. Vào phần Mẫu (Template)
3. Chọn chỉnh sửa HTML (Edit HTML)
4. Tìm thẻ sau:
<b:include data='post' name='post'/>
- Lệnh include ở trên sẽ giúp duyệt hiển thị các bài viết ở tất cả các kiểu trang. Vậy ta bắt đầu thay nó bằng đoạn code bên dưới:
<!-- Điều kiện nếu ở kiểu trang index --><b:if cond='data:blog.pageType == "index"'><!-- Điều kiện nếu ở các bài viết có gắn nhãn --><b:if cond='data:post.labels'> <b:loop values='data:post.labels' var='label'> <b:if cond='data:label.name != "HiddenLabel"'><!-- Ở đây đặt điều kiện cho các nhãn, hiển thị bài viết của tất cả các nhãn ở trang index, trừ nhãn có tên HiddenLabel --><b:include data='post' name='post'/> <!-- Kết thúc điều kiện cho các nhãn --> </b:if> </b:loop> <b:else/><!-- Nếu các bài viết không gắn nhãn thì cũng cho hiển thị ở trang index --><b:include data='post' name='post'/> </b:if> <b:else/><!-- ở kiểu trang còn lại là các trang item thì --><b:include data='post' name='post'/> </b:if>
5. Tiếp theo là ẩn liên kết nhãn HiddenLabel ở cuối bài viết hoặc dưới tiêu đề bài viết để khi ta đọc đến các bài viết thuộc nhãn HiddenLabel thì sẽ không nhìn thấy liên kết của nó.
5.1. Tìm tất cả các đoạn code như bên dưới.
5.1. Tìm tất cả các đoạn code như bên dưới.
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url'
rel='tag'><data:label.name/></a><b:if
cond='data:label.isLast != "true"'>,</b:if>
</b:loop>
5.2.. Rồi thay nó bằng đoạn code bên dưới.
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name != "HiddenLabel"'>
<a expr:href='data:label.url'
rel='tag'><data:label.name/></a><b:if
cond='data:label.isLast != "true"'>,</b:if>
</b:if>
</b:loop>
6. Lưu Template là hoàn thành.
- Bằng cách này chúng ta có thể tạo được rất nhiều trang riêng biệt có tính năng không hiển thị ở kiểu trang chính như trang tĩnh vậy, miễn là ta gán cho các bài viết đó chung cho một nhãn nhất định.
- Bằng cách này chúng ta có thể tạo được rất nhiều trang riêng biệt có tính năng không hiển thị ở kiểu trang chính như trang tĩnh vậy, miễn là ta gán cho các bài viết đó chung cho một nhãn nhất định.
» Cách 2: Ẩn một nhãn ở kiểu trang Index:
- Các bạn thực hiện từ bước 1 đến bước 5.1 ở cách 1 bên trên. sau đó thay code bước 5.2 thành đoạn code bên dưới:
<!-- Điều kiện nếu ở kiểu trang index -->
<b:if cond='data:blog.pageType == "index"'>
<!-- Điều kiện nếu ở các bài viết có gắn nhãn -->
<b:if cond='data:post.labels'>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name != "Tên nhãn 1"'>
<b:if cond='data:label.name != "Tên nhãn 2"'>
<b:include data='post' name='post'/>
<!-- Kết thúc điều kiện cho các nhãn -->
</b:if></b:if>
</b:loop>
<b:else/>
<!-- Nếu các bài viết không gắn nhãn thì cũng cho hiển thị ở trang index -->
<b:include data='post' name='post'/>
</b:if>
<b:else/>
<!-- ở kiểu trang còn lại là các trang item thì -->
<b:include data='post' name='post'/>
</b:if>
- Lưu Template là hoàn thành.
Hiển thị 1 nhãn trên trang chủ
1. Đăng nhập vào blog của bạn.
2. Chọn mẫu (tempalate) => Chọn Chỉnh sửa HTML (Edit HTML)
3. Tìm đoạn code <b:includable id='main' var='top'> và kéo chuột xuống vài dòng bạn sẽ tìm được đoạn code tương tự như bên dưới (đoạn này có thể khác nhau tuỳ theo từng blog nha các bạn):
- Lúc này mình tìm thẻ đóng </b:includable> của thẻ <b:includable id='main' var='top'>. Và đặt đoạn code bên dưới vào sau thẻ </b:includable> nói trên.
2. Chọn mẫu (tempalate) => Chọn Chỉnh sửa HTML (Edit HTML)
3. Tìm đoạn code <b:includable id='main' var='top'> và kéo chuột xuống vài dòng bạn sẽ tìm được đoạn code tương tự như bên dưới (đoạn này có thể khác nhau tuỳ theo từng blog nha các bạn):
<b:loop values='data:posts' var='post'>
<b:include data='post' name='post'/>
<b:if cond='data:blog.pageType == "item"'>
<b:include data='post' name='comments'/>
</b:if>
<b:if cond='data:post.includeAd'>
<b:if cond='data:post.isFirstPost'>
<data:defaultAdEnd/>
<b:else/>
<data:adEnd/>
</b:if>
<data:adCode/>
<data:adStart/>
</b:if>
<b:if cond='data:post.trackLatency'>
<data:post.latencyJs/>
</b:if>
</b:loop>
- Thay thế nó thành đoạn code bên dưới:<b:loop values='data:posts' var='post'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<b:if cond='data:post.labels'>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name == "Show Label"'>
<b:include data='post' name='printPosts'/>
</b:if>
</b:loop>
</b:if>
<b:else/>
<b:include data='post' name='printPosts'/>
</b:if>
</b:loop>
Ở đây Show Label, Chính là tên nhãn mà bạn muốn hiển thị bài viết của nhãn đó ở trang chủ.
- Lúc này mình tìm thẻ đóng </b:includable> của thẻ <b:includable id='main' var='top'>. Và đặt đoạn code bên dưới vào sau thẻ </b:includable> nói trên.
<b:includable id='printPosts' var='post'>
<b:if cond='data:post.dateHeader'>
<h2 class='date-header'>
<data:post.dateHeader/>
</h2>
</b:if>
<b:include data='post' name='post'/>
<b:if cond='data:blog.pageType == "static_page"'>
<b:include data='post' name='comments'/>
</b:if>
<b:if cond='data:blog.pageType == "item"'>
<b:include data='post' name='comments'/>
</b:if>
</b:includable>
Lưu mẫu lại và kiểm tra kết quả của các bạn nha.
Thứ Sáu, 12 tháng 9, 2014
responsive comment facebook for blogspot
Chèn comment facebook cho blogspot như thế nào ? Các bước tích hợp responsive comment facebook cho blogger chuẩn HTML5 ? Đó là vấn đề cần nhắc đến bài này .
Đầu tiên các bạn đăng nhập vào tài khoản blogger của bạn chọn Mẫu >> Chỉnh sửa HTML nhấn Ctrl+F tìm đến thẻ ]]></b:skin> thêm đoạn CSS bên dưới lên trước nó .
Lưu ý:
CSS Responsive comment facebook
@media only screen and (max-width: 767px) {Sau khi thêm CSS xong chúng ta tìm đến thẻ </head> thêm Javascript bên dưới lên trước nó.
.fb-comments {
width: 100% !important;
}
.fb-comments iframe[style] {
width: 100% !important;
}
.fb-like-box {
width: 100% !important;
}
.fb-like-box iframe[style] {
width: 100% !important;
}
.fb-comments span {
width: 100% !important;
}
.fb-comments iframe span[style] {
width: 100% !important;
}
.fb-like-box span {
width: 100% !important;
}
.fb-like-box iframe span[style] {
width: 100% !important;
}
}
Javascript comment facebook
<script type='text/javascript'>Tiếp tục chúng ta tìm đến thẻ</body> và thêm đoạn Code ngôn ngữ facebook bên dưới lên trước nó
//<![CDATA[
var purl= location.href;
var fb_href = purl.substring(0,purl.indexOf(".html")+5);
var fbcm ='<div class="fb-comments" data-href="'+fb_href+'" data-num-posts="10" data-width="100%"></div>';
//]]>
</script>
Code ngôn ngữ facebook
<div id='fb-root'/>Để hiển thị comment facebook chúng ta tìm đến thẻ <b:include data='post' name='post'/>và thêm đoạn mã bên dưới sau nó.
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/vi_VN/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<b:if cond='data:blog.pageType == "item"'>Để quản lý facebook chúng ta cần thêm thẻ meta <meta content='App ID' property='fb:app_id'/> dưới thẻ <head>
<script type='text/javascript'>
document.write(fbcm);
</script>
</b:if>
Lưu ý:
- Nếu các bạn chưa biết cách tạo App ID để quản lý facebook và ưu nhược điểm của nó thì các bạn xem bài này
- data-num-posts="10" Số 10 là số lượng comment hiển thị.
Bước cuối cùng lưu lại và test kết quả tìm được .Chúc các bạn thành công !
Thứ Tư, 10 tháng 9, 2014
3CD hướng dẫn Blend màu đẹp cho dân thiết kế
- Chọn bộ 3CD hướng dẫn Blend ảnh đẹp cho các bạn.
Hi xin chào các bạn,nay mình giới thiệu 3 bộ CD hướng dẫn Blend ảnh cho các bạn hay dùng photoshop thích chỉnh sửa ảnh,blend ảnh .Đây là bộ CD có thể nói là tuyệt vời với những ai mong muốn nâng cao tay nghề thiết kế.Bộ đĩa rất rễ học với hình ảnh và video hướng dẫn chi tiết, tất cả bằng tiềng việt vì nó được làm bởi tác giả tác giả “Nguyễn Văn Lương-Namdatviet“.
Link tải từ host Google yêu quý nên các bạn yên tâm về tốc độ nhé :).Link download 3 bộ CD cho các bạn :
Chúc các bạn học tốt với bộ CD này!.
20 Tutorials to Develop Plugin WordPress
I collect from pelfusion.com, you can visit pelfusion.com or see below
plugin for wordpress
- Dưới đây là những kiến thức mà tôi thu thập được trên internet trong thời gian tìm hiểu wordpress. Và tôi sử dụng kiến thức từ cuốn tài liệu tiếng anh “ebook WordPress Developer Plugin “
Lap trinh WordPress7Và tôi sẽ chia sẽ những kiến thức đó với mong muốn học hỏi, trao đổi kiến thức.
- Như tôi đã trình bày. Những bài tôi viết chủ yếu dành cho các bạn mời bắt đầu vào wordpress. Các bạn đã tìm hiểu qua có thể trao đổi hoặc giúp tôi viết những tut khác hay hơn và sâu hơn.
- Tôi sẽ trình bày các phương thức cơ bản nhất của plugin.
Trước tiên mình lấy một cái ví dụ nho nhỏ:
Các bạn tạo một file tên là stripUnicode.php nằm trong folder có đường dẫn như sau:
Wordpress/wp-content/plugins/stripUnicode.php
Các bạn mở file này lên và viết một số đoạn code như sau:
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
*/
function stripUnicode($str) {
if (!$str)
return false;
$unicode = array(
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|� �|ẩ|ẫ|ậ',
'd' => 'đ',
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'i' => 'í|ì|ỉ|ĩ|ị',
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|� �|ở|ỡ|ợ',
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
);
foreach ($unicode as $nonUnicode => $uni)
$str = preg_replace("/($uni)/i", $nonUnicode, $str);
return $str;
}
- Nhìn code của function stripUnicode các bạn cũng biết chức năng nó là chuyển đổi một đoạn chữ có dấu sang không có dấu. thường dùng để tạo đường link thân thiện
- Trong đoạn comment đầu tiên chính là khai báo cấu trúc của plugin và cũng là khai báo cho wordpress biết đây là một plugin. Vậy các bạn thấy plugin có gì khác lạ không cũng bình thường nhỉ chỉ là những đoạn code bình thường nhằm thực hiện một cái gì đó chứ ko phải nó to tác như trong đầu các bạn đang suy nghĩ. Hồi xưa mình cũng vậy. mới vào nghe viết plugin wordpress nghe ghê gớm lắm nhưng thực ra chỉ là thế :D
- Khai báo tên của plugin
Plugin Name: stripUnicode
- Khai báo nguồn gốc của plugin
Plugin URI: localhost
- Mô tả sơ lược về plugin này
Description: Plugin remove Unicode
- Tác giả, version và đường link của tác giả.
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
- Trong số những thôg tin trên thì Plugin name là quan trọng nhất. các bạn không thể thiếu dòng này
- Vậy là ta đã viết xong một plugin. Các bạn vào admin -> plugins thì sẽ thấy plugin strip Unicode mà ta vừa tạo ra. Các bạn active nó sau đó ra ngoài site xem trang xem chi tiết một bài viết bất kỳ nào đó. Điều gì xảy ra …. Chưa có gì đúng không nào.
Vấn đề ở đây là ta chưa khai báo sử dụng nó. Để sử dụng nó ta dùng đoạn code sau đây đặt bên dưới function stripUnicode
Lap trinh WordPress8add_filter('the_title, 'stripUnicode' );
- Ý nghĩa của đoạn code như sau:
The_title các bạn cũng biết nó dùng để lấy tiêu đề một bài viết, còn stripUnicode dùng để chuyển về dạng chữ không có dấu. mỗi khi bạn gọi the_title thì nó sẽ gọi tới cái plugin stripUnicode và thực thi cái plugin này trả về kết quả cho bạn, cái mà nó return về cũng chính là cái the_title return về.
FULL CODE
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
*/
if (version_compare($wp_version, "2.5", '<'))
{
die('Please update plugin');
}
function stripUnicode($str) {
if (!$str)
return false;
$unicode = array(
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|� �|ẩ|ẫ|ậ',
'd' => 'đ',
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'i' => 'í|ì|ỉ|ĩ|ị',
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|� �|ở|ỡ|ợ',
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
);
foreach ($unicode as $nonUnicode => $uni)
$str = preg_replace("/($uni)/i", $nonUnicode, $str);
return $str;
}
add_filter('the_title', 'stripUnicode' );
- Ví dụ như sau: titile là “tôi là ai” thì nếu bạn không sử dụng plugin này khi bạn gọi the_title() thì nó sẽ lấy nguyên đoạn “tôi là ai”, ngược lại nếu bạn thực thi plugin này thì nó sẽ có kết quả là “toi la ai“.
- Các bạn nhìn cái function add_filter vậy nó là cái gì?
- Để tìm hiểu nó là cái gì trước tiên mình nói đên khái niệm HOOK LÀ GÌ?
Theo khái niêm của mình HOOK chính là những function mà wordpress đã viết sẵn giúp ta thao tác với CSDL hay một cái gì gì đó. chẳng hạng như the_title nó chính là một hook dùng để lấy tiêu đề bài viết và đay là một filter. Add_option dùng để them một record vào table option và đây là một action
- Ta thử so sánh với trigger trong CSDL xem sao. Trigger nó thực hiện ngầm cho một action nào đó ví dụ insert, update, delete. Với wordpress thì những hành động insert, update, delete đó chính là những cái HOOKS và cái plugin chính là cái trigger đó.
- Để xem danh sách các HOOK các bạn vào codex hoặc trang http://adambrown.info/p/wp_hooks/hook ở đó có danh sách tất cả các hook.
- ở trên mình có nhắc tới hook filter và hook action. Vậy filter là gì? Action là gì?
Nghe đến filter cũng đoán được ý nghĩa là định dạng lại một cái gì đó. ở ví dụ trên mình dùng add_filter tại vì mình dùng hook filter the_content. Coi ví dụ đó các bạn cũng hiểu được ý nghĩa cùa filter rồi phải ko nào. Nó thực hiện một thao tác chuyển đổi nào đó trước khi đưa ra màn hình hoặc trước khi insert vào db chẳng hạng.
- Còn action. Nếu hẳn các bạn biết MVC thì cũng biết action là gì rồi. nó là một hành động nào đó ví dụ như add_option dùng để thực hiện một action là insert dữ liệu.
Để hình dung hơn action là gì tôi lấy ví dụ như sau. Giả sử khi bạn xóa một bài post thì bạn muốn gửi một email thong báo đến admin là đã có một bài post bị xóa. Muốn như vậy thì ta sẽ viet một plugin gửi mail và dùng add_action để đưa nó vào hành động khi xóa đó là after_delete_post chẳng hạng. after_delete_post là một hook action các bạn có thể tìm thấy ở link tham khảo trên.
- Trên đó là những khái niêm mà tôi hiểu sao ghi vậy. Nhiều khi không đúng với định nghĩa thực tế có gì các bạn bổ sung them hoặc search
google ra rất là nhiều khái niệm
- Đọc tới đây chắc hẳn các bạn cũng hiểu sơ sơ khái niệm rồi nhỉ. Nếu mình trình bày khó hiểu thì các bạn có thể xem thêm các ví dụ dưới đây và làm theo. Các bạn sẽ hình dung được nó như thế nào :D.
Ví dụ 1: chuyển tất cả các tiêu đề bài viết thành chữ hoa. Ta sẻ sử dụng hook filter “the_title”
Hì đơn giản phải không nào. Trước tiên ta viết một plugin chuyển nhé. Ah mà hình như cái plugin chuyển thành chữ hoa có sẵn rồi thì phải. ta chỉ cần gọi nó ra đó chính là plugin strtoupper mà PHP đã cung cấp sẵn cho chúng ta.
Bước 1: tạo một file str_to_upper_title.php
Bước 2: khai báo wordpress biết đây là một plugin
/*
Plugin Name: string to upper the title
Plugin URI:
Description:
Version:
Author:
Author URI:
*/
Bước 3: code cho plugin
add_filter(‘the_title’,’ strtoupper’);
Vậy là xong rồi. các bạn thử bằng cách vào trang chi tiết bài viết xem cái tiêu đề nó bị biến dạng như thế nào nhé.
- Từ đây các bạn cũng có thể thấy đôi khi mình không cần phải viết plugin. Thay vào đó là những function có sẵn và cái ví dụ này tôi cũng đã chứng minh được rằng PLUGIN CHỈ LÀ FUNCTION
Ví dụ 2: Mỗi khi publish một bài post hay có một bài comment nào đó thì sẽ gửi mail đến tác giả của bài viết đó. Ta sẻ sử dụng hook action. publish_post và comment_post
Bước 1: tạo file send_mail_list.php
Bước 2: khai báo nơi thường trú :D
/*
Plugin Name: Send mail to Author posted
Plugin URI:
Description:
Version:
Author:
Author URI:
*/
Bước 3: viết code send mail và thực hiện hook
function mailing_list($post_ID)
{
$list = 'john@somesite.com,becky@somesite.com';
mail($list, 'My Blog Update',
'My blog has just been updated: '.get_settings('home'));
}
// Send notification with every new post and comment
add_action('publish_post', 'mailing_list');
add_action('comment_post', 'mailing_list');
- Ví dụ này mình lấy từ cuốn Ebook ra tí nữa mình sẽ đưa link cho các bạn download cuốn ebook này.
- Đến đây coi như tôi đã demo xong phần plugin wordpress. Àh con vấn đề cần lưu ý là khi các bạn viết plugin nên có thêm đoạn code kiểm tra phiên bản plugin nhé.
Kết thúc bài này hi vọng các bạn có cái nhìn tổng thể plugin wordpress
- Nếu có cơ hội tôi sẽ đề cập đến nhiều hơn nữa về Plugin trong Tutorial này. mình sẽ ko viết bài mới và viết tiếp theo bên dưới bài này luôn. Hi vọng các bạn theo dõi
- Link download Cuốn Tài liệu. Luyện Xong có thể xuất xuống núi :D
http://www.mediafire.com/?2ylwm3m2bzrn8k3
Lap trinh WordPress7Và tôi sẽ chia sẽ những kiến thức đó với mong muốn học hỏi, trao đổi kiến thức.
- Như tôi đã trình bày. Những bài tôi viết chủ yếu dành cho các bạn mời bắt đầu vào wordpress. Các bạn đã tìm hiểu qua có thể trao đổi hoặc giúp tôi viết những tut khác hay hơn và sâu hơn.
- Tôi sẽ trình bày các phương thức cơ bản nhất của plugin.
Trước tiên mình lấy một cái ví dụ nho nhỏ:
Các bạn tạo một file tên là stripUnicode.php nằm trong folder có đường dẫn như sau:
Wordpress/wp-content/plugins/stripUnicode.php
Các bạn mở file này lên và viết một số đoạn code như sau:
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
*/
function stripUnicode($str) {
if (!$str)
return false;
$unicode = array(
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|� �|ẩ|ẫ|ậ',
'd' => 'đ',
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'i' => 'í|ì|ỉ|ĩ|ị',
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|� �|ở|ỡ|ợ',
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
);
foreach ($unicode as $nonUnicode => $uni)
$str = preg_replace("/($uni)/i", $nonUnicode, $str);
return $str;
}
- Nhìn code của function stripUnicode các bạn cũng biết chức năng nó là chuyển đổi một đoạn chữ có dấu sang không có dấu. thường dùng để tạo đường link thân thiện
- Trong đoạn comment đầu tiên chính là khai báo cấu trúc của plugin và cũng là khai báo cho wordpress biết đây là một plugin. Vậy các bạn thấy plugin có gì khác lạ không cũng bình thường nhỉ chỉ là những đoạn code bình thường nhằm thực hiện một cái gì đó chứ ko phải nó to tác như trong đầu các bạn đang suy nghĩ. Hồi xưa mình cũng vậy. mới vào nghe viết plugin wordpress nghe ghê gớm lắm nhưng thực ra chỉ là thế :D
- Khai báo tên của plugin
Plugin Name: stripUnicode
- Khai báo nguồn gốc của plugin
Plugin URI: localhost
- Mô tả sơ lược về plugin này
Description: Plugin remove Unicode
- Tác giả, version và đường link của tác giả.
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
- Trong số những thôg tin trên thì Plugin name là quan trọng nhất. các bạn không thể thiếu dòng này
- Vậy là ta đã viết xong một plugin. Các bạn vào admin -> plugins thì sẽ thấy plugin strip Unicode mà ta vừa tạo ra. Các bạn active nó sau đó ra ngoài site xem trang xem chi tiết một bài viết bất kỳ nào đó. Điều gì xảy ra …. Chưa có gì đúng không nào.
Vấn đề ở đây là ta chưa khai báo sử dụng nó. Để sử dụng nó ta dùng đoạn code sau đây đặt bên dưới function stripUnicode
Lap trinh WordPress8add_filter('the_title, 'stripUnicode' );
- Ý nghĩa của đoạn code như sau:
The_title các bạn cũng biết nó dùng để lấy tiêu đề một bài viết, còn stripUnicode dùng để chuyển về dạng chữ không có dấu. mỗi khi bạn gọi the_title thì nó sẽ gọi tới cái plugin stripUnicode và thực thi cái plugin này trả về kết quả cho bạn, cái mà nó return về cũng chính là cái the_title return về.
FULL CODE
/*
Plugin Name: stripUnicode
Plugin URI: localhost
Description: Plugin remove Unicode
Author: TheHalfHeart
Version: 1.0
Author URI: TheHalfHeart@gmail.com
*/
if (version_compare($wp_version, "2.5", '<'))
{
die('Please update plugin');
}
function stripUnicode($str) {
if (!$str)
return false;
$unicode = array(
'a' => 'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|� �|ẩ|ẫ|ậ',
'd' => 'đ',
'e' => 'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'i' => 'í|ì|ỉ|ĩ|ị',
'o' => 'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|� �|ở|ỡ|ợ',
'u' => 'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'y' => 'ý|ỳ|ỷ|ỹ|ỵ',
);
foreach ($unicode as $nonUnicode => $uni)
$str = preg_replace("/($uni)/i", $nonUnicode, $str);
return $str;
}
add_filter('the_title', 'stripUnicode' );
- Ví dụ như sau: titile là “tôi là ai” thì nếu bạn không sử dụng plugin này khi bạn gọi the_title() thì nó sẽ lấy nguyên đoạn “tôi là ai”, ngược lại nếu bạn thực thi plugin này thì nó sẽ có kết quả là “toi la ai“.
- Các bạn nhìn cái function add_filter vậy nó là cái gì?
- Để tìm hiểu nó là cái gì trước tiên mình nói đên khái niệm HOOK LÀ GÌ?
Theo khái niêm của mình HOOK chính là những function mà wordpress đã viết sẵn giúp ta thao tác với CSDL hay một cái gì gì đó. chẳng hạng như the_title nó chính là một hook dùng để lấy tiêu đề bài viết và đay là một filter. Add_option dùng để them một record vào table option và đây là một action
- Ta thử so sánh với trigger trong CSDL xem sao. Trigger nó thực hiện ngầm cho một action nào đó ví dụ insert, update, delete. Với wordpress thì những hành động insert, update, delete đó chính là những cái HOOKS và cái plugin chính là cái trigger đó.
- Để xem danh sách các HOOK các bạn vào codex hoặc trang http://adambrown.info/p/wp_hooks/hook ở đó có danh sách tất cả các hook.
- ở trên mình có nhắc tới hook filter và hook action. Vậy filter là gì? Action là gì?
Nghe đến filter cũng đoán được ý nghĩa là định dạng lại một cái gì đó. ở ví dụ trên mình dùng add_filter tại vì mình dùng hook filter the_content. Coi ví dụ đó các bạn cũng hiểu được ý nghĩa cùa filter rồi phải ko nào. Nó thực hiện một thao tác chuyển đổi nào đó trước khi đưa ra màn hình hoặc trước khi insert vào db chẳng hạng.
- Còn action. Nếu hẳn các bạn biết MVC thì cũng biết action là gì rồi. nó là một hành động nào đó ví dụ như add_option dùng để thực hiện một action là insert dữ liệu.
Để hình dung hơn action là gì tôi lấy ví dụ như sau. Giả sử khi bạn xóa một bài post thì bạn muốn gửi một email thong báo đến admin là đã có một bài post bị xóa. Muốn như vậy thì ta sẽ viet một plugin gửi mail và dùng add_action để đưa nó vào hành động khi xóa đó là after_delete_post chẳng hạng. after_delete_post là một hook action các bạn có thể tìm thấy ở link tham khảo trên.
- Trên đó là những khái niêm mà tôi hiểu sao ghi vậy. Nhiều khi không đúng với định nghĩa thực tế có gì các bạn bổ sung them hoặc search
google ra rất là nhiều khái niệm
- Đọc tới đây chắc hẳn các bạn cũng hiểu sơ sơ khái niệm rồi nhỉ. Nếu mình trình bày khó hiểu thì các bạn có thể xem thêm các ví dụ dưới đây và làm theo. Các bạn sẽ hình dung được nó như thế nào :D.
Ví dụ 1: chuyển tất cả các tiêu đề bài viết thành chữ hoa. Ta sẻ sử dụng hook filter “the_title”
Hì đơn giản phải không nào. Trước tiên ta viết một plugin chuyển nhé. Ah mà hình như cái plugin chuyển thành chữ hoa có sẵn rồi thì phải. ta chỉ cần gọi nó ra đó chính là plugin strtoupper mà PHP đã cung cấp sẵn cho chúng ta.
Bước 1: tạo một file str_to_upper_title.php
Bước 2: khai báo wordpress biết đây là một plugin
/*
Plugin Name: string to upper the title
Plugin URI:
Description:
Version:
Author:
Author URI:
*/
Bước 3: code cho plugin
add_filter(‘the_title’,’ strtoupper’);
Vậy là xong rồi. các bạn thử bằng cách vào trang chi tiết bài viết xem cái tiêu đề nó bị biến dạng như thế nào nhé.
- Từ đây các bạn cũng có thể thấy đôi khi mình không cần phải viết plugin. Thay vào đó là những function có sẵn và cái ví dụ này tôi cũng đã chứng minh được rằng PLUGIN CHỈ LÀ FUNCTION
Ví dụ 2: Mỗi khi publish một bài post hay có một bài comment nào đó thì sẽ gửi mail đến tác giả của bài viết đó. Ta sẻ sử dụng hook action. publish_post và comment_post
Bước 1: tạo file send_mail_list.php
Bước 2: khai báo nơi thường trú :D
/*
Plugin Name: Send mail to Author posted
Plugin URI:
Description:
Version:
Author:
Author URI:
*/
Bước 3: viết code send mail và thực hiện hook
function mailing_list($post_ID)
{
$list = 'john@somesite.com,becky@somesite.com';
mail($list, 'My Blog Update',
'My blog has just been updated: '.get_settings('home'));
}
// Send notification with every new post and comment
add_action('publish_post', 'mailing_list');
add_action('comment_post', 'mailing_list');
- Ví dụ này mình lấy từ cuốn Ebook ra tí nữa mình sẽ đưa link cho các bạn download cuốn ebook này.
- Đến đây coi như tôi đã demo xong phần plugin wordpress. Àh con vấn đề cần lưu ý là khi các bạn viết plugin nên có thêm đoạn code kiểm tra phiên bản plugin nhé.
Kết thúc bài này hi vọng các bạn có cái nhìn tổng thể plugin wordpress
- Nếu có cơ hội tôi sẽ đề cập đến nhiều hơn nữa về Plugin trong Tutorial này. mình sẽ ko viết bài mới và viết tiếp theo bên dưới bài này luôn. Hi vọng các bạn theo dõi
- Link download Cuốn Tài liệu. Luyện Xong có thể xuất xuống núi :D
http://www.mediafire.com/?2ylwm3m2bzrn8k3
Đăng ký:
Nhận xét (Atom)
Bài đăng mới nhất