WordPress – Custom Taxonomies
- November 25, 2010
- 25 comments
Chào mọi người. Hôm nay tanlevis xin giới thiệu 1 chức năng rất hay của wordpress – Custom taxonomy.
Taxonomy là gì?
- taxonomy là 1 cách để phân loại những bài viết trong wordpress, ví dụ các taxonomies mặc định của WP như: Categories, Post tags.
- Taxonomy vô cùng quan trọng trong việc thể hiện những bài post trong wp theo ý muốn của mình, ví dụ như 1 shop thời trang nhỏ như http://www.valentineyogurt.com/test/
Ứng dụng
Trong bài viết này mình có demo những gì mình đã viết ở địa chỉ http://www.valentineyogurt.com/test/, các bạn có thể login vào để thử, user: test, pass: 123456.

Cách sử dụng
- Mở file function.php trong thư mục theme của bạn, thêm đoạn code sau vào phần cuối file (nhớ là trước dấu ?>)
.
// Custom taxonomy for Size
register_taxonomy('Size', 'post', array(
'hierarchical' => true, 'label' => 'Size',
'query_var' => true, 'rewrite' => true));
// Custom taxonomy for Price
register_taxonomy('Price', 'post', array(
'hierarchical' => false, 'label' => 'Price',
'query_var' => true, 'rewrite' => true));
// Custom taxonomy for Brand
register_taxonomy('Brand', 'post', array(
'hierarchical' => true, 'label' => 'Brand',
'query_var' => true, 'rewrite' => true));
function register_taxonomy($taxonomy, $object_type, $args = array()): có chức năng đăng ký 1 taxonomy mới.
$taxonomy: tên taxonomy (vd: Size).
$object_type: đối tượng mà taxonomy quản lý (vd: post, page, link, custom post type).
$args = array(): mảng các tham số như:
‘hierarchical’ => true | false: có được phân cấp như Categories hay không.
‘label’: Nhãn hiển thị trong option panel, vd: Size, Price, Brand. ..v..v.. các bạn có thể tham khảo tại đây: http://codex.wordpress.org/Function_Reference/register_taxonomy
Khi đăng ký xong hãy vào dashboard, vào mục Posts và hãy nhìn xem chúng ta có gì? Đó là 3 taxonomy với tên (Size, Price, Brand) vừa đăng ký ở trên. Chúng giống như quản lý Tags, hay là Categories vậy.
Hiển thị taxonomy: Mở file index.php, tìm đoạn code nơi xuất ra những bài post, thêm code dưới đây vào trong vòng loop:
//hiển thị hình ảnh sản phẩm <?php if(has_post_thumbnail()):?> <div> <?php echo get_the_post_thumbnail($post->ID, 'post-thumbnail'); ?>" </div> <?php endif;?> //Hiển thị title <h2 class="entry-title"> <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?> </a> </h2> <div> <?php echo get_the_term_list( $post->ID, 'Size', '<strong>Kích thước:</strong>', ', ', '' );?> </div> <div> <?php echo get_the_term_list( $post->ID, 'Brand', '<strong>Nhãn hiệu:</strong>', ', ', '' );?> </div> <div> <?php echo get_the_term_list($post->ID, 'Price', '<strong>Giá:</strong>', '', '');?> </div>
function get_the_term_list($id = 0, $taxonomy, $before = ”, $sep = ”, $after = ”): hiện các taxonomy của bài viết này theo tên của taxonomy đã đăng ký.
$id: $post->ID, id hiện tại của 1 post.
$taxonomy: tên của taxonomy mình đã đăng ký, vd: Size, Price, Brand (lưu ý có phân biệt chữ hoa và thường).
$before: thẻ, ký tự trước khi xuất ra tên của taxonomy, vd: <strong>Giá:</strong>
$sep: dấu các giữa các taxonomy, vd dấy phẩy (,).
$after: thẻ, ký tự sau khi xuất ra tên của taxonomy, trong bài này mình để rỗng.
Giai đoạn cuối là post vài bài lên thử nghiệm và style css lại cho đẹp, trong demo này mình lấy theme 20 10 (twenty ten) mặc định cửa wp 3.0 và cũng không style lại cho giống shop thời trang lắm
.
Kết luận
Theo mình thì taxonomy thực sự rất hay, và rất cần thiết cho việc tùy chỉnh wordpress làm việc theo ý mình. Mình đang có ý định viết 1 trang quản lý học sinh trên WP. Hy vọng sớm thành hiện thực. Tiện đây mình cũng xin giới thiệu luôn bài viết tiếp theo sẽ là Custom Post Type trong wp và sau nữa sẽ là một trang smallShop có sản phẩm, giỏ hàng và vài chi tiết khác. Nếu có thắc mắc hay đóng góp cải thiện thì mong các bạn comment ở bên dưới nha.
Hi các bạn.
mình có 1 thắc mắc không biết các bạn có ai gập phải và đã tìm được cách giải quyết chưa. mọi người cùng giúp mình nhé.
mình sử dụng custom taxonomy tên là: typeproduct trong đó mình có thời trang nam, thời trang nữ. trong menu mình đưa thời trang nữ vào menu. nhưng khi mình click vào nó thì các bài viết không được hiển thị ra. mọi người cho mình hỏi làm thế nào để hiển thị các bài viết của 1 term thuộc custom taxonomy như ví dụ trên.
nếu chỉ select ra thì ok. nhưng vấn đề là hiển thị thành 1 trang trong menu.
mọi người giúp mình nhé.
Hay quá, nhờ đọc cái này ngộ ra 1 điều mà bấy lâu nay thắc mắc, cám ơn Izwebz nhiều lắm.
Bài viết của bạn rất hay và bổ ích. Mình mới chỉ biết được mỗi cái hàm get_post_custom_values() mà đã đủ chế ra được 1 shop bán hàng đơn giản như trang somihanquoc.vn, somihanghieu.com rồi. Nay đọc được bài viết của bạn thấy có thể làm ra được nhiều tính năng khác nữa. Cám ơn sự chia sẻ rất hữu ích của bạn.
Chúc bạn năm mới mạnh khỏe và có nhiều bài viết hữu ích cho cộng đồng nữa.
- Đường link vào test bị lỗi bạn . Có thể fix link để mọi người cùng vào học hỏi được ko
?
- Mình muốn hỏi là cũng cái thêm twentyten đó, giờ mình muốn hiển thị danh sách các sản phẩm giống như một shopping ý thì phải làm như thế nào vậy ?
mình đang xây dựng 1 site cho câu lạc bộ nhị khúc HCM , site mình xâu dựng cũng coi như hoàn thành 70% rồi còn vài chỗ chưa làm được mong bạn tanlevis và mọi người giúp tí .
site của mình : nhikhucvn.host22.com
đây là site chia sẽ thông tin,trong site mình muốn tạo 1 shop online để bán sán phẩm về nhị khúc nhưng chẳng biết bắt đầu từ như thế nào ? xài plugin nào là hợp lý nhất, nếu không xài plugin được không ?
còn phần nữa là Forum cho mình hỏi có thể dùng các mã nguồn mở khác không ? chẳng hạn PHPBB ..
bạn nào có kinh nghiệm trong vấn để này giúp mình với .
Email : Mr.daklak@yahoo.com
Các anh ơi có cách nào khi xuất taxonomy ra thì nó ko chèn vào thẻ mà chỉ xuất ra dạng text đc ko ạ.
Em ví dụ: em gõ vào đó là http://domain.com vậy khi xuất ra là http://domain.com chứ ko phải là http://domain.com
Demon Warlock cho mình hỏi ngoài lề cái, bạn dùng codeBB nào để add được code dạng thẻ
, có thể bày cho mình cách chèn nó vào WordPress được không?
Tôi sử dụng WP Plugin SyntaxHighlighter Evolved để highlight code.
Cam ơn bạn nhé! Chúc izwebz luôn vững mạnh và phát triển..Ok
Chuẩn quá ! đang cần cái ni
Àh quên còn cái code php lấy hình ra nè :
<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("data_name", $con); $result = mysql_query("SELECT * FROM hinh"); while($row = mysql_fetch_array($result)) { $pic = $row["hinh"]; echo "<tr>"; echo "<img src=\"$pic\" />"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>You rock man
. Tự mày mò tí học được nhiều hơn nhỉ :p
Qua hướng dẫn của anh demon mình làm được cách up hình vào folder, url vào database như sau :
HTML FORM
PHP CODE
<?php $conn=mysql_connect("localhost","root","") or die("can't connect your database"); mysql_select_db("data_name",$conn); move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']); $url="upload/".$_FILES['file']['name']; $sql="insert into hinh(pic) values('$url')"; mysql_query($sql,$conn); echo "Upload Thanh cong"; mysql_close($conn); ?>Híc! cho code vô thẻ [ php] chú ơi [ /php] không chịu đọc kỹ hướng dẫn sử dụng trước khi dùng gì cả
em làm xong tutorial rồi muốn up lên thì làm ntn hả anh dw ơi huhu!!
Chú đoàn UP lên Vimeo trước đi. Sau đó cho anh Demon link để check thôi ^^. Không thì up file lên mediafire trước. Anh demon sẽ Down về và xử lý ^^
Mình thấy rất hay.!
anh DW có thể làm video về trang thành viên:
thành viên có quyền:
post bài,
sửa bài cũa mình.
sửa hồ sơ.
…
hoặc nếu ai biết thì mail cho mình với. mình loay hoay bữa giờ mà ko được.
mail: ken.culu@gmail.com
thank very.!
Anh demon ơi , anh có thể làm 1 cái video hướng dẫn dùng code mysql insert 1 hình vào csdl, trong csdl lưu đường dẫn tới hình đó ( hình đó sẽ được lưu vào 1 folder )
sau đó dùng code select trong csdl lấy ra đường dẫn đó, cắt đường dẫn làm sao cho nó vàdduwwocj folder chứa hình để lấy hình trong folder đó ra show lên trang web của mình
em nghĩ thế có đúng ko các bạn ?
Anh có thể gợi ý để em làm như thế này.Người ta không lưu hình vào CSDL
, mà người ta chỉ lưu đường dẫn tới file hình đó vào CSDL thôi.
Sau khi em tạo script upload hình rồi thì lưu đường dẫn vào một biến $image_loc = “images/…..jpg”; chẳng hạn. Sau đó thì dùng câu lệnh SQL INSERT để lưu giá trị của biến này vào CSDL.
Còn nếu muốn truy xuất nó ra thì cũng dùng mysqli_fetch_array() và chèn giá trị của biến $image_loc vào thuộc tính src của thẻ <img /> ví dụ:
Chà, cái này mà dùng cho các trang WP bán hàng thì hay phết đấy.
các bác cho gà em hỏi 1 tí, theo em học trong video của CK thì câu lênh mysql trong php là : mysql_query();
còn xem trong video của bác demon thì là: mysqli_query();
em mới tìm hiểu mysql nên còn gà lắm, mong bác nào giải thích hộ em rõ ah
MySQLi (MySQL improved) được phát triển để tận dụng lợi thế của các tính năng mới trong các hệ thống MySQL phiên bản 4.1.3 và mới hơn. Các mysqli tích hợp trong PHP 5 và phiên bản sau này.
Việc mở rộng mysqli có một số lợi ích:
+Object-oriented interface
+Support for Prepared Statements
+Support for Multiple Statements
+Support for Transactions
+Enhanced debugging capabilities
+Embedded server suppor
(Sưu tầm trên Internet)
Hay lắm bạn, bóc tem trước nhá. Tiếp tục gửi những bài viết hay để IZWEBZ chúng ta ngày càng phong phú.
Bạn Trần Bình Tâm không được bóc tem.Bạn đã vi phạm nguyên tắc