Trang chủ Blog Trang 3

Bài 08: Metadata API trong WordPress

0

Ở bài trước chúng ta đã tìm hiểu về Custom Meta Boxes và mình cũng có đề cập đến Metadata căn bản, chính vì quá căn bản nên trong bài này mình sẽ tìm hiểu một số cách sử dụng nâng cao hơn.

WordPress sử dụng mô hình EAV nhằm giúp lập trình viên có thể tùy biến theo từng dự án. Ví dụ bạn muốn tạo một website bán hàng với các sản phẩm đầy đủ các thuộc tính như kích thước, màu sắc thì bạn có thể sử dụng bảng meta để lưu trữ các thông tin đó. Vấn đề này mình có nói rõ ở bài Meta Boxes rồi nên bạn có thể quay lại tham khảo trước khi đọc bài này nhé.

1. Metadata API trong WordPress

Trong WordPress có nhiều table chứa bài viết, kèm theo mỗi table như vậy chúng ta sẽ thấy một bảng metadata. Ví dụ chúng ta có bảng commentmetapostmetatermmetausermeta. Và để xử lý các thao tác thêm, xóa, sửa các metadata thì WordPress cung cấp cho chúng ta bốn hàm như sau:

Đây là bốn hàm xử lý chung chung và về cách sử dụng thì bạn có thể click vào từng hàm để xem chi tiết kèm các ví dụ một cách rõ ràng hơn, hoặc bạn cũng có thể xem phần giải thích dưới đây.

add_metadata()

Hàm này thêm một thông tin meta vào cơ sở dữ liệu, cấu trúc của nó như sau:

Trong đó:

  • $meta_type: Tên đối tượng metadata. Ví dụ post, page, comment, term
  • $object_id: Khóa ngoại tham chiếu đến table chính. Ví dụ cần lưu trữ thông tin của bài post có ID = 12 thì lúc này giá trị của $object_id là 12.
  • $meta_key: Key của Meta data
  • $meta_value: Giá trị của Meta data
  • $unique: Nếu bằng true thì key $meta_key sẽ là duy nhất, ngược lại bạn có thể thêm nhiều field với $meta_key giống nhau.

delete_metadata()

Hàm này xóa một hoặc nhiều metas ra khỏi cơ sở dữ liệu, cấu trúc như sau:

Trong đó các tham số truyền vào được giải thích như trong hàm add_metadata(). Riêng tham số

  • $delete_all sẽ có giá trị true hoặc false, nếu true thì nó xóa hết tất cả các field có key trùng với $meta_key, ngược lại nó chỉ xóa field có key trùng với $meta_key và có object_id trùng với $object_id.
  • $meta_value nếu bạn thiết lập giá trị cho tham số này thì nó sẽ bổ sung thêm một điều kiện xóa đó là giá trị của key meta phải bằng với $meta_value.

get_metadata()

Hàm này dùng để lấy một metadata trong cơ sở dữ liệu, cấu trúc của nó như sau:

Hai tham số đầu thì quá quen thuộc rồi, riêng tham số $single sẽ quyết định kết quả trả về của hàm này. Nếu $single = true thì nó sẽ trả về giá trị của $meta_key, ngược lại nó sẽ trả về một mảng chứa tất cả các thông tin của record đó.

update_metadata()

Hàm này cập nhật giá trị cho một meta key nào đó, cấu trúc như sau:

Giá trị của $prev_value sẽ bổ trợ cho tham số $unique của hàm add_metadata(), nghĩa là nếu bạn truyền một giá trị vào $prev_value thì nó sẽ thêm một điều kiện là chỉ cập nhật cho những record nào có meta value bằng $prev_value.

2. Một số hàm bổ trợ Metadata API

Nếu các bạn để ý kỹ thì tất cả bốn hàm trên đều có một tham số truyền vào đó là $meta_type, điều này đôi khi gây phiền hà đối với lập trình viên vì bắt buộc phải nhớ tên của đối tượng cần cập nhật. Và để tường minh hơn thì đối với mỗi đối tượng như vậy thì WordPress sẽ cung cấp thêm bốn hàm riêng biệt.

Adding metadata Getting metadata Updating metadata Deleting metadata
Posts add_post_meta() get_post_meta() update_post_meta() delete_post_meta()
Users add_user_meta() get_user_meta() update_user_meta() delete_user_meta()
Comments add_comment_meta() get_comment_meta() update_comment_meta() delete_comment_meta()
Term add_term_meta() get_term_meta() update_term_meta() delete_term_meta()
Parameters $post_id,
$meta_key,
$meta_value,
$unique (optional)
$post_id,
$meta_key,
$single (optional),
$post_id,
$meta_key,
$meta_value,
$prev_value (optional)
$post_id,
$meta_key,
$meta_value (optional)

Thay vì sử dụng các hàm metadata và có truyền tham số $meta_type thì bạn sử dụng các hàm trên để bỏ qua tham số $meta_type.

Về danh sách các tham số truyền vào thì bạn sẽ suy ra từ hàm chính của nó. Ví dụ hàm get_metadata() sẽ có 4 tham số truyền vào, trong đó tham số đầu tiên là $meta_type và tham số này sẽ được loại bỏ nên lúc này các hàm add_post_meta()add_user_meta()add_comment_meta()add_term_meta() chỉ còn ba tham số còn lại (bỏ đi tham số $meta_type).

Ví dụ:

3. Lời kết

Bài này mình chỉ giới thiệu danh sách các hàm Metadata API trong WordPress, đây là các API khá quan trọng bởi vì khi lập trình WordPress bắt buộc các bạn phải biết để có thể tự mình design ra những database phù hợp cho các dự án. Bài này mình xin dừng tại đây, bài tiếp theo chúng ta sẽ vận dụng các API này kết hợp với meta boxes để thêm dữ liệu cho các bài viết trong WordPress.

Nguồn: freetuts.net

Bài 07: Custom Meta Boxes – Metadata trong WordPress

0

WordPress là một CMS nên hệ thống dữ liệu của nó chỉ dừng lại ở một mức độ nào đó, nghĩa là bạn không thể thêm bớt các field một cách tự tiện được vì điều này sẽ làm cho hệ thống cấu trúc của nó bị phá vỡ. Tuy nhiên vấn đề này đã được khắc phục bởi WordPress sử dụng mô hình EAV (Entity-Attribute-Value), đây là mô hình cho phép bạn thêm một field bất kì bởi mối quan hệ (1 – n) giữa các table.

Trước tiên chúng ta tìm hiểu mô hình này đã nhé 🙂

1. Mô hình EAV trong WordPress

EAV là chữ viết tắt của Entity-Attribute-Value, đây là mô hình cho phép mỗi table có thể tạo ra nhiều trường lưu trữ khác nhau. Mô hình này thường áp dụng với những CMS hoặc lưu trữ cho những hệ thống đa ngôn ngữ.

Trong WordPress có nhiều table áp dụng mô hình này, tuy nhiên mình chỉ đưa ra 2 table posts và postmeta thôi bởi vì đa số chúng ta sử dụng nó thường xuyên.

Với cấu trúc này thì table postmeta đóng vai trò lưu trữ các thuộc tính cho table posts, vì vậy nó có một khóa ngoại là post_id. Nói là khóa ngoại nhưng thực chất khi bạn cài đặt WordPress thì nó sẽ không thiết lập các tham chiếu, vì vậy ta có thể coi đây là 2 bảng tách biệt không có mối quan hệ khóa ngoại (vẫn join được nhé các bạn).

Với mỗi bài viết bạn có thể thêm rất nhiều key cho nó và được lưu trữ trong bảng postmeta, field meta_key sẽ là tên của key và meta_value sẽ là giá trị của key. Ví dụ bạn cần luu trữ link_download và link_demo cho bài viết có id = 12 thì cách lưu trữ như sau:

ID post_id meta_key meta_value
# – auto increment 12 link_download https://freetuts.net/download.php
# – auto increment 12 link_demo https://freetuts.net/demo.php

Lúc này muốn lấy danh sách key của bài viết có id = 12 thì quá đơn giản phải không nào 🙂

2. WordPress Meta Boxes là gì?

Khi bạn đăng nhập vào admin và bạn edit một bài viết nào đó thì các khối trong giao diện ta gọi là các Meta Boxes. Vậy Meta Boxeslà các khối hiển thị dữ liệu cho phép người dùng chỉnh sửa và lưu lại trong trang quản lý bài viết của WordPress.

Các vị trí mà mình kẻ ô màu đỏ chính là các Meta Boxes. Vậy mỗi Meta Box sẽ có những đặc điểm như thế nào? Làm sao để có thể phân biệt các Meta Boxes? Để trả lời câu hỏi này thì chúng ta tiếp tục tìm hiểu nhé.

3. Hàm add_meta_box trong WordPress

Hàm add_meta_box() dùng để thêm một Meta Box vào trong giao diện admin của WordPress, hàm này có cú pháp như sau:

Trong đó:

  • $id: Là ID của meta box, ID này phải là duy nhất không trùng với các Meta Boxes khác, kể cả các Meta Boxes mặc định của WordPress.
  • $title: Tiêu đề của Meta Box
  • $callback: Hàm callback dùng để hiển thị mã HTML nằm bên trong Meta Box
  • $screen: Hay còn gọi là page. Đối tượng mà Meta Box sẽ hiển thị, có thể là Page, Post hoặc là một custom post type.
  • $context: Vị trí mà Meta Box sẽ hiển thị bên trên giao diện. Chúng ta có ba vị trí đó là normaladvanced và side.
  • $priority: Mức độ ưu tiên của Meta box, có bốn giá trị là defaultcorehigh, và low.
  • $callback_args: Một mảng các tham số truyền vào Meta Box

Lưu ý: Action Hook của Meta Box có tên là add_meta_boxes.

Ví dụ: Thêm một Meta Box có tên là Thể Loại vào Post

Như thường lệ bạn tạo một file tên là my-meta-boxes.php nằm trong thư mục include và đừng quên require nó ở file wp-learn.php nhé. Nếu bạn chưa biết cấu trúc thì hãy xem lại bài tìm hiểu plugin là gì nhé.

Tiếp theo bạn hãy nhập nội dung sau vao file vừa tạo trên.

Bạn vào admin edit một bài post bất kì thì sẽ thấy một ô với giao diện như sau:

Bây giờ ta sẽ tìm hiểu chi tiết hơn nữa nhé.

Tham số truyền vào hàm callback

Như ở ví dụ trên thì trong hàm callback mặc định sẽ có hai tham số truyền vào, tham số đầu tiên là $post và đây chính là một đối tượng lưu trữ thông tin của bài viết hiện tại. Tham số thứ hai là $metabox lưu trữ thông tin của metabox như $id$title và các $callback_args.

Bây giờ bạn sửa lại hàm show_metabox_contain() như sau:

Chạy lên bạn sẽ thấy giao diện như sau:

Bạn để ý phần in giá trị của $metabox sẽ có một key là args, đây chính là giá trị các tham số truyền vào lúc add_meta_box.

$context và $priority

Đây là hai giá trị mà có lẽ bạn thắc mắc nhất phải không nào 🙂 Thực ra nó không có gì to tác cả mà chỉ là vị trí hiển thị của meta box trong giao diện thôi.

  • $context là vị trí hiển thị, chúng ta có hai vị trí chính đó là bên sidebar và main contain.
  • $prioritylà độ ưu tiên hiển thị, bạn hãy tự mình thay đổi các giá trị để xem kết quả nhé.

4. Căn bản về Meta data

Vấn đề về xử lý meta data rất nhiều và mình sẽ dành nó ở một bài nâng cao, vì vậy trong phần này mình sẽ hướng dẫn các bạn cách sử dụng căn bản thôi nhé.

Trước khi đọc phần 4 này thì bạn hãy xem kỹ phần 1 nhé vì ở đó mình có giới thiệu cách lưu trữ của bảng postmeta.

Hiển thị giao diện

Giả sử trong phần Meta box thể loại mình sẽ có 3 loại đó là videotext hoặc image, lúc này trong hàm hiển thị nội dung meta box ta sẽ show nó ra ở dạng select để người dùng chọn. Bạn sửa lại hàm show_metabox_contain như sau:

Chạy lên bạn sẽ thấy giao diện như sau:

Mình sẽ giải thích nội dung của hàm này một chút.

Đoạn code dưới đây ta có thể ví nó như là một input hidden dùng để xử lý vấn đề bảo mật, nó sẽ sinh ra một ô input hidden bạn có thể dùng firebug để xem.

Đoạn code dưới đây sẽ lấy thông tin trong bảng postmeta, tham số truyền vào là ID và KEY cần lấy, giá trị true sẽ nói cho WordPress biết là sẽ trả về giá trị đơn thay vì trả về một mảng (đỡ mất công phải xử lý mảng để lấy giá trị).

Các đoạn code còn lại thì quá đơn giản rồi 🙂

Xử lý lưu dữ liệu

Trên là vấn đề hiển thị giao diện, tiếp theo chúng ta cần phải xử lý lưu lại thông tin. Để lưu trữ thông tin thì ta sẽ phải sử dụng một Hook Action tên là save_post, action này sẽ xảy ra khi người dùng click save bài viết. Bây giờ bạn bổ sung một đoạn code sau vào phía bên dưới của file my-meta-boxes.php.

Trong code mình có giải thích rồi nên mình không giải thích lại nữa.

Và đây chính là toàn bộ nội dung của file my-meta-boxes.php.

Hãy chạy lên và thử lưu lại xem kết quả có đúng không nhé 🙂 Nếu sai thì tức là bạn đã thực hiện các thao tác bị lỗi rồi đấy.

5. Lời kết

Như vậy mình đã giới thiệu toàn bộ kiến thức về Meta Boxes và cách tạo Meta Box trong WordPress. Bên cạnh đó mình có giới thiệu sơ lược về cách sử dụng metadata, đặc biệt là hai hàm update_post_meta và get_post_meta. Bài tiếp theo chúng ta sẽ tìm hiểu rõ hơn về cách sử dụng Metadata.

Nguồn: freetuts.net

Bài 06: Hệ thống Admin Menu API trong WordPress

0

Ở bài tạo trang quản lý Options mình đã hướng dẫn các bạn thêm một sub menu vào menu Appearance, tuy nhiên vẫn còn khá nhiều vấn đề xung quanh menu của Admin, nên mình viết bài này để hướng dẫn các bạn hiểu rõ hơn về hệ thống Admin Menu trong WordPress.

1. Hệ thống Admin Menu trong WordPress

Có lẽ mình không cần phải giải thích ý nghĩa của từng mục menu trong WordPress nữa vì đó là kiến thức căn bản, bạn phải quản lý nội dung trong WordPress tốt thì mới có thể theo dõi series này được.

Khi bạn đăng nhập vào Admin thì sẽ có một hệ thống menu như sau:

Mỗi menu cha như vậy bạn hoàn toàn có thể thêm menu con vào bằng cách sử dụng hàm add_submenu_page. Ngoài ra bạn cũng có thể tự tạo một menu cha bằng cách sử dụng hàm add_menu_page.

Vấn đề nên thêm menu vào vị trí nào thì tùy thuộc vào mỗi lập trình viên, họ có thể muốn thêm menu vào phần Post nếu menu đó liên quan đến bài viết, thêm menu vào media nếu liên quan đến việc upload xử lý file. Nhưng thông thường mỗi theme sẽ có một menu riêng biệt để giúp quản trị viên có thể quản lý dễ dàng hơn.

Hook hiển thị menu: Hooks hiển thị menu có tên là admin_menu và đây là một Action Hook.

Bâu giờ mình sẽ trình bày cách thêm từng loại menu nhé.

2. Thêm một Admin Menu vào WordPress

Để xem danh sách các function API hỗ trợ việc tạo Admin Menu trong WordPress thì bạn có thể click vào đây để tham khảo.

Để thêm một Menu mới vào hệ thống Menu trong Admin thì bạn sử dụng hàm add_menu_page, hàm này có cấu trúc như sau:

Trong đó:

  • $page_title: Tiêu đề của trang nằm trên thẻ title
  • $menu_title: Tên của menu hiển thị ở danh sách menu
  • $capability: Tên quyền chứa những nhóm có thể thao tác với Menu, xem danh sách tại đây.
  • $menu_slug: Slug URL của trang
  • $function: Hàm sẽ được gọi khi bạn click vào menu, thông thường chúng ta tạo mã HTML trong hàm này.
  • $icon_url: Đường dẫn tới Icon của menu
  • $position: Vị trí hiển thị menu tính từ trên xuống.

Ví dụ: Thêm một menu tên là Plugin Options vào danh sách Admin Menu của WordPress.

Trước tiên bạn tạo cho tôi một file tên là admin-menu.php nằm trong thư mục includes của wp-learn plugin (xem hinh).

Đừng quên require file này trong file chính của plugin wp-learn.php nhé.

Bạn bổ sung đoạn code sau vào file admin-menu.php.

Bây giờ bạn login vào Admin và xem trên dàn menu sẽ thấy xuất hiện thêm một menu mới.

Bạn click vào menu Plugin Options sẽ thấy nó chuyển sang một trang mới với nội dung là “Đây là trang Plugin Options”. Tại đây bạn có thể thay đổi giao diện để code chức năng theo yêu cầu.

3. Thêm Admin Sub Menu trong WordPress

Để thêm submenu thì bạn sử dụng hàm add_submenu_page, hàm này có cấu trúc như sau:

Trong đó:

  • $parent_slug: URL của menu cha.
  • $page_title: Tiêu đề của trang nằm trên thẻ title
  • $menu_title: Tên của menu hiển thị ở danh sách menu
  • $capability: Tên quyền chứa những nhóm có thể thao tác với Menu, xem danh sách tại đây.
  • $menu_slug: Slug URL của trang
  • $function: Hàm sẽ được gọi khi bạn click vào menu, thông thường chúng ta tạo mã HTML trong hàm này.

Ví dụ: Thêm 2 menu con gồm General SettingsAdvance Settings vào menu Plugin Options mà ta đã tạo ở trên.

Bạn mở file admin-menu.php lên và bổ sung đoạn code sau:

Về cách hoạt động thì tương tự như phần 2. Tuy nhiên mình vẫn nhấn mạnh là bạn phải tạo hàm callback như trên nhé, nêu không khi click vào menu nó sẽ bị lỗi không tìm thấy hàm callback.

Bây giờ bạn chạy lên sẽ thấy xuất hiện 2 menu con như hình sau:

3. Xóa Admin Menu ra khỏi hệ thống WordPress

Để xóa một menu hoặc submenu ra khỏi hệ thống admin cảu WordPress thì bạn sử dụng hai hàm sau:

  • remove_menu_page() – dùng để xóa menu cha
  • remove_submenu_page() – dùng để xóa menu con

remove_menu_page()

Hàm này có một tham số truyền vào đó là slug của page. Ví dụ muốn xóa menu Appearance thì bạn sẽ truyền slug là themes.phpvào là được.

remove_submenu_page()

Hàm này có hai tham số truyền vào đó là slug của menu cha và slug của menu con cần xóa. Giả sử mình ẩn đi menu Add Newtrong menu Users.

4. Một số hàm xử lý Admin Menu khác

Trong hệ thống menu của admin bạn thấy WordPress đã chia ra rất rõ từng nhóm cụ thể, vì vậy nó cũng cung cấp cho chúng ta một số hàm dùng để thêm sub menu vào mỗi nhóm đó.

Vì kiến thức quá nhiều nên mình sẽ không trình bày cách sử dụng các hàm này, bạn hãy click vào để xem các ví dụ mà WordPress Codex đã đưa ra để hiểu rõ hơn nhé.

5. Lời kết

Với danh sách các hàm này bạn có thể tạo một menu bất kì rồi đấy, tuy trong bài mình không trình bày đầy đủ nhưng với những đường link mình dẫn đến trang codex thì bạn hoàn toàn có thể tự học được.

Bài này mình xin dừng tại đây, bài tiếp theo có lẽ chúng ta sẽ tìm hiểu về Custom Meta Box.

Nguồn: freetuts.net

Bài 05: Tạo trang quản lý Options trong WordPress

0

Vận dụng các kiến thức về Options API trong WordPress thì trong bài này mình sẽ hướng dẫn các bạn tạo một trang quản lý các options trong admin.

Ở bài trước mình có nêu ra một ví dụ về quản lý thông tin username và mật khẩu của email, vậy thì trong bài này chúng ta sẽ tạo ra một trang quản lý hai thông tin này, tức là người dùng có thể sửa và thay đổi giá trị của chúng.

Để tạo được trang quản lý Options này thì bạn sẽ phải thực hiện lần lượt theo từng bước mà mình sẽ trình bày bên dưới đây.

1. Tạo admin menu

Khi bạn đăng nhập vào hệ thống quản lý admin thì sẽ thấy một giao diện gồm nhiều menu như sau:

Đây chính là các menu mặc định (cố định) của WordPress.

Vấn đề tìm hiểu tất cả các menu này thì mình sẽ dành cho một bài khác, vì vậy trong bài này mình sẽ hướng dẫn các bạn cách thêm một menu đơn giản thôi nhé, và vị trí mình sẽ thêm là một menu con nằm bên trong mục Appearance với tên là Theme Options và khi click vào menu này thì sẽ chuyển hướng sang trang quản lý thông tin tài khoản Gmail.

Bạn vào file option-api.php xóa đi tất cả những đoạn code cũ và dán vào một đoạn code sau:

Đoạn code này sẽ hiển thị một menu con nằm bên trong menu cha Appearance.

Bạn thử click vào menu Theme Options thì sẽ nhận được một trang thông báo lỗi như sau:

Lỗi này có ý nghĩa là bạn đã thiếu một hàm callback tên là access_menu_optionsaccess_menu_options chính là giá trị mà ta đã truyền vào trong đoạn code add_submenu_page. Để hết lỗi thì bạn tạo cho tôi một hàm tên là access_menu_options nằm trong file option-api.php luôn nhé.

Chạy lại trang này bạn sẽ thấy không còn thông báo lỗi nữa.

2. Tạo giao diện form quản lý Theme Options

Hàm access_menu_options sẽ có nhiệm vụ xử lý hiển thị giao diện của form. Tuy nhiên để dễ quản lý file thì bạn tạo một folder tên là template nằm bên trong thư mục public, sau đó tạo thêm một file theme-option.php bên trong thư mục template dùng để hiển thị form, cuối cùng là require file theme-option.php ở trong hàm access_menu_options.

Cấu trúc folder:

Nội dung trong hàm access_menu_options:

Nội dung file theme-option.php:

Chạy lạ menu này thì bạn sẽ thấy một giao diện như sau:

Như vậy là chúng ta đã hoàn thành bước 2, thật tuyệt vời.

3. Hiển thị thông tin trước khi cập nhật

Bây giờ chúng ta sẽ code chức năng hiển thị thông tin lên các ô input để người dùng có thể chỉnh sửa bằng cách sử dụng Options API get_option.

Bạn sửa lại hàm access_menu_options như sau:

Sau đó qua file theme-option.php sửa lại như sau:

4. Xử lý lưu thông tin Options

Bạn hãy để ý form quản lý option mình không truyền đường dẫn vào thuộc tính action, vì vậy khi submit form nó sẻ xử lý tại trang này luôn.

Bạn sửa lại function access_menu_options như sau:

Và đây chính  là bước cuối cùng của chức năng quản lý options này. Bạn vào trang này và thực hiện cập nhật nội dung 2 thông tin trên để xem thành quả nhé 🙂

5. Lời kết

Trong bài này mình chỉ hướng dẫn cách sử dụng căn bản và không có kết hợp các chức năng bảo mật trong WordPress nên các bạn hãy dùng để tham khảo thôi nhé, sau này khi nói đến vấn đề bảo mật thì chúng ta sẽ làm lại một cách chuyên nghiệp hơn.

Bài này mình có sử dụng các hàm chưa học về tạo menu con, vì vậy bài tiếp theo mình sẽ trình bày về vấn đề này.

Nguồn: freetuts.net

Bài 04: Options API trong WordPress

0

Trong database của WordPress bạn sẽ thấy một table ten là [prefix]_options, table này sẽ chứa các thông tin cấu hình của hệ thống. Ngoài các thông tin cấu hình của hệ thống ra thì bạn có thể thêm các thông tin cho riêng bạn, điều này rất hay thường làm khi xây dựng plugin. Ví dụ khi bạn xây dựng một theme thì bạn sẽ phải viết chức năng quản lý cấu hình cho theme đó, lúc này bạn sẽ phải sử dụng table options này để lưu trữ.

1. WordPress Options API là gì?

Options API là danh sách các hàm có sẵn giúp lập trình viên có thể thực hiện các thao tác thêm, xóa, sửa, và lấy các dữ liệu trong bảng Options của WordPress.

Trước tiên chúng ta tìm hiểu các field trong bảng này đã nhé.

Như vậy bảng này gồm có 4 field và mỗi field sẽ có ý nghĩa như sau:

  • option_id: Khóa chính của bảng này
  • option_name: Tên key của option
  • option_value: Giá trị của option
  • autoload: Có 2 giá trị là yes hoặc no, nếu yes thì record này sẽ tự động load khi trang web được chạy.

Ví dụ bạn muốn lưu cấu số bài viết hiển thị lúc phân trang thì bạn có thể lưu với giá trị như sau:

  • option_id: Tăng tự động, chúng ta ko truyền vào
  • option_name: total_record_paging
  • option_value: 10
  • autoload: yes

2. Danh sách các Options API

Thời điểm hiện tại chúng ta có tổng cộng 8 hàm và bạn có thể xem tại đây. Hoặc các bạn click vào từng link dưới đây để xem hướng dẫn online trên trang chủ của WordPress.

Trong bài này chúng ta chỉ tìm hiểu hàm add_optiondelete_optionget_option và update_option thôi nhé, các hàm còn lại xử lý trong vấn đề làm multisite nên mình sẽ không đề cập tới. Tuy nhiên nếu tò mò thì các bạn có thể click vào link để xem 🙂

3. Ví dụ sử dụng Options API

Bây giờ mình sẽ viết một số ví dụ cách sử dụng bốn hàm add_optionget_optiondelete_option và update_option.

Bạn tạo một file tên options-api.php nằm trong thư mục includes của plugin mà ở bài 1 chúng ta đã xây dựng, và nhớ đừng quên sử dụng lênh require để thêm file này vào file wp-learn.php nhé.

Rồi, giả sử bây giờ mình cần viết chức năng gửi mail bằng tài khoản gmail nên mình cần lưu hai thông tin tên tài khoản và mật khẩu để sử dụng lúc gửi. Bây giờ ta thực hiện các thao tác nhé.

add_option

Hàm này có cú pháp như sau:

Trong đó:

  • $option: là tên key
  • $value: là giá trị của key
  • $deprecated: giá trị này bỏ nên bạn không cần sử dụng, cứ để trống lúc sử dụng, giá trị mặc định là rỗng.
  • $autoload: nếu = yes thì hệ thống sẽ tự động load record này lúc website chạy, giá trị mặc định là no nên nếu bạn muốn hệ thống load tự động thì mới sử dụng tham số này.

Bạn viết một đoạn code trong file options-api.php như sau:

Sau đó bạn reload trang web và vào xem danh sách data của bảng options sẽ có thêm 2 record.

get_option

Nếu muốn lấy một record nào đó trong bảng options thì ta sử dụng hàm get_option, hàm này sẽ có cấu trúc như sau:

Trong đó:

  • $option: là tên key muốn lấy
  • $default: là giá trị mặc định trường hợp không có key đó trong database.

Bây giờ ta sẽ lấy giá trị key mailer_gmail_username xem có được không nhé. Bạn ẩn đi đoạn code cũ và bổ sung một đoạn code như sau vào file option-api.php.

Lệnh die mình sử dụng để dễ nhìn kết quả trả về. Bạn chạy thử và sẽ thấy giao diện như sau:

delete_option

Hàm này dùng để xóa đi một key nào đó trong bảng options. hàm này chỉ có một tham số truyền vào là tên key muốn delete.

Bây giờ ta xóa key mailer_gmail_username trước khi in và sau khi in xem kết quả thế nào nhé.

Kết quả phần var_dump sẽ trả về false.

update_option

Hàm này dùng để cập nhật giá trị của một key nào đó trong bảng options, nó có cấu trúc như sau:

Trong đó:

  • $option: là tên key muốn cập nhật
  • $new_value: là giá trị mới
  • $autoload: là giá trị autoload

Dữ liệu lúc này trong database chỉ còn key mailer_gmail_password nên bây giờ chúng ta sẽ cập nhật giá trị của key này xem có được không nhé.

Bạn ẩn đi các đoạn code cũ và code lại như sau:

Chạy lên bạn sẽ thấy giao diện như sau:

Quá hấp dẫn và dễ gây nghiện phải không các bạn 🙂

4. Lời kết

Trong bài này mình đã giới thiệu xong 4 hàm thường hay dùng trong WordPress trong việc xử lý giao tiếp với bảng options, vẫn còn 4 hàm nữa nhưng mình để dành 4 hàm đó cho các bạn tự nghiên cứu nhé.

Chúng ta đang học các kiến thức về WordPress nâng cao nhằm sau này có thể tự viết các plugin nên mình hiện tại mình đang trình bày theo hình thức lý thuyết, vì vậy nhiều bạn đọc có thể sẽ thấy nhàm chán 🙂 Nhưng hãy ráng đọc nhé vì nếu không bạn sẽ không biết là trong WordPress có những chức năng như vậy.

Nguồn: freetuts.net

Bài 03: WordPress API là gì?

0

Đáng lẽ mình không viết bài này nhưng lúc đang viết bài tiếp theo thì cảm thấy cần phải giải thích rõ WordPress API là gì trước khi tìm hiểu các kiến thức sâu hơn, vì vậy bài này chúng ta sẽ cùng tìm hiểu về API nhé.

1. API là gì?

API là chữ viết tắt của Application Programming Interface (giao diện lập trình ứng dụng), nó là các cổng giúp các hệ thống có thể giao tiếp với nhau. Ví dụ khi bạn muốn lấy danh sách bạn bè trên Facebook thì đương nhiên bạn không thể nào truy vấn vào dữ liệu của Facebook được mà phải thông qua một địa chỉ mà facebook cho phép bạn lấy, ta gọi đây là Facebook API. Hoặc khi bạn xây dựng chức năng đăng nhập bằng Facebook, Google thì bạn cũng phải sử dụng các API mà họ cung cấp và dựa vào kết quả của API đó mà có thể biết được đăng nhập thành công hay thất bại.

2. WordPress API là gì?

Khái niệm tương tự như trên nhưng ở đây nó gom lại một cụm nhỏ hơn đó là danh sách các API trong CMS WordPress.

Khi bạn sử dụng một CMS hay một Framework bất kì thì điều tối kị là bạn không nên bất kì thông tin gì bên trong core của chúng, điều này sẽ gặp phải vấn đề lớp khi bạn nâng cấp Version cao hơn, vì vậy hầu hết  chúng đều cung cấp các API giúp bạn can thiệp vào Core mà không cần phải chỉnh sửa trong Core. Vậy WordPress API là danh sách các hàm, các đối tượng giúp lập trình viên có thể can thiệp vào core của WordPress một các dễ dàng mà không cần phải thay đổi trực tiếp trên chúng.

3. Danh sách API WordPress

Để cập nhật danh sách các API đúng theo version mới nhất của WordPress thì tôi khuyên bạn nên vào trang chủ codex của họ. Tuy nhiên để các bạn dễ theo dõi thì mình xin liệt kê danh sách các API đúng theo thời điểm hiện tại.

Mình sẽ không giải thích từng loại API mà sẽ dành cho các bài tiếp theo, chúng ta sẽ lần lượt tìm hiểu qua chúng và cách sử dụng căn bản, trường hợp mình không có thời gian thì bạn hãy theo đường link mình cung cấp để tham khảo nhé.

4. Lời kết

Qua bài này mình đã giới thiệu danh sách các API có trong WordPress, với danh sách các API này bạn có thể can thiệp vào mọi vị trí bên trong core của chúng từ admin cho tới frontend. Chúng ta sẽ lần lượt tìm hiểu từng API và sau series này bạn sẽ thấy mê mẩn với bộ CMS này đấy 🙂

Nguồn: freetuts.net

Bài 02: Hooks là gì? Action và Filter trong WordPress

0

Bạn đã từng nghe khái niệm lập trình hướng sự kiện trong các Framework như Zend, Laravel, Phalcon? Hay thậm chí trong Javascript cũng có khái niệm về lập trình sự kiện. Vậy thì trong WordPress có tồn tại khái niệm này không? Để trả lời câu hỏi này thì trong bài này chúng ta sẽ tìm hiểu về Hooks trong WordPress nhé.

1. Hooks là gì?

Hooks có thể được coi là danh sách các điểm đặc biệt trong hệ thống WordPress mà ở đó bạn có thể bổ sung các đoạn code thông qua hai hàm add_action và add_filter mà WordPress đã cung cấp sẵn. Chúng ta có hai nhóm hooks chính đó là Filter và Action.

  • Filter: Là các điểm liên quan đến xử lý lấy nội dung
  • Action: Là các điểm liên quan đến xử lý hành động

Mỗi hook sẽ có các tham số truyền vào khác nhau nên để chắc chắn thì trước khi sử dụng một hook nào đó bạn hãy lên trang codex để tham khảo nhé. Ví dụ với hook the_title thì sẽ có hai tham số truyền vào đó là $title và $id. Trường hợp trang codex không giải thích có bao nhiêu tham số thì bạn hãy tự mình debug bằng cách truyền tham số vào và kết hợp với hàm var_dump để in ra xem nội dung tham số đó là gì.

Trước khi tìm hiểu Action và Filter thì bạn tạo cho tôi hai file hook-filter.php và hook-action.php nằm trong thư mục includes mà ở bài plugin là gì chúng ta xây dựng.

Tiếp theo bạn vào file wp-learn.php bổ sung hai đoạn code require hai file đó vào như sau:

2. Filter Hooks

Filter hooks được ví như một bộ lọc trong WordPress vì các hook này liên quan đến xử lý lấy nội dung. Hiện nay có rất nhiều loại filter và bạn có thể xem tại đây. Đặc điểm chung của loại này là mỗi hook sẽ trả về một nội dung nào đó, và bạn sử dụng hàmadd_filter để bổ sung dữ liệu vào nội dung trả về đó.

Hàm add_filter có cấu trúc như sau:

Trong đó:

  • $tag: là tên của filter hook
  • $function_to_add là hàm callback muốn bổ sung vào $tag
  • $priority là mức độ ưu tiên của hàm callback, mức độ ưu tiên càng cao thì hàm callback đó sẽ được gọi trước. Giá trị mặc định là 10.
  • $accepted_args là tổng số các tham số tham gia vào hàm callback và không được vượt quá tổng số của hook. Giá trị mặc định là 1

Ví dụ: Giả sử mình muốn khi in ra tiêu đề của các bài viết thì bổ sung thêm từ freetuts.net ở trước thì làm như sau.

Bạn mở file hook-filter.php lên và code như sau:

Trong đó:

  • the_title: Ta gọi là hook filter dùng để lấy tiêu đề bài viết
  • add_string_to_title: Ta gọi là hàm callback, hàm này sẽ xử lý nội dung CẦN trả về của hàm the_title trước khi nó trả về. Trong hàm add_string_to_title bạn sẽ thắc mắc biến $title ở đâu ra phải không nào 🙂 biến này chính là tiêu đề mà hook the_title truyền vào (xem danh sách tham số của the_title).

Luồng xử lý như sau: Gả sử hàm the_title có nội dung như sau:

Lúc  này nếu ta sử dụng hàm add_filter để bổ sung hàm callback add_string_to_title vào the_title thì nó sẽ hoạt động dạng như sau:

Vậy thực chất khi bạn bổ sung một hành động nào đó vào filter thì tức là bạn bổ sung một đoạn code xử lý trước khi filter đó trả về quả về.

3. Action Hooks

Action hooks là danh sách các hook liên quan đến xử lý sự kiện. Ví dụ khi bạn lưu một bài viết thì ta có hook save_post, khi người dùng comment thì có hook comment_post.

Tất cả các hooks đều quan trọng vì nó giúp chúng ta xâm nhập vào hệ thống core mà không cần phải phá source của WordPress. Ví dụ bạn muốn khi người dùng bình luận thì gửi email thông báo thì bạn sẽ viết một hàm gửi mail và đưa nó vào hook comment_post.

Ta sử dụng hàm add_action để bổ sung hành động vào Action Hook. Hàm này có các tham số như sau:

Trong đó:

  • $tag: là tên của filter hook
  • $function_to_add là hàm callback muốn bổ sung vào $tag
  • $priority là mức độ ưu tiên của hàm callback, mức độ ưu tiên càng cao thì hàm callback đó sẽ được gọi trước. Giá trị mặc định là 10.
  • $accepted_args là tổng số các tham số tham gia vào hàm callback và không được vượt quá tổng số của hook. Giá trị mặc định là 1

Ví du: Khi lưu bài viết nếu bài viết ở trạng thái public thì hãy gửi email đến cho admin

Action hook lưu bài viết là save_post, hook này có ba tham số truyền vào đó là:

  • $id: id bài viết đang lưu hoặc mới thêm
  • $post: toàn bộ nội dung như title, content của bài viết
  • $is_update: nếu TRUE tức hành động save post này là hành động update, ngược lại là hành động insert.

Ok bây giờ bạn mở file hook-action.php lên và code như sau:

Quá đơn giản phải không các bạn 🙂

4. Lời kết

Bài này tương đối khó hiểu vì đây chính là nội dung trọng tâm và quan trọng nhất mà ban phải biết khi lập trình WordPress, vì vậy bạn phải hiểu nguyên lý hoạt động của nó thì sau này bạn mới có thể code những website có tính sáng tạo được.

Qua bài này mình đã giải thích khái niệm Hooks là gì và hai nhóm hooks trong WordPress đó là Action và Filter, hy các ví dụ kèm với các lời giải thích sẽ giúp bạn mở rộng kiến thức của mình và từ đó ngày càng yêu mến WordPress 🙂

Nguồn: freetuts.net

Bài 01: Plugin WordPress là gì? Cấu trúc plugin WordPress

0

Như ta biết WordPress là một CMS mã nguồn mở giúp quản lý nội dung một cách dễ dàng. Trước đây WordPress được biết đến như một CMS dùng để xây dựng blog, tuy nhiên giờ đây sức mạnh của WordPress không dừng lại ở một blog thông thường mà bạn có thể sử dụng WordPress để xây dựng hầu hết các loại website như web giới thiệu, web bán hàng và web tin tức.

Khi bạn cài đặt WordPress thì mặc định nó sẽ là một blog bình thường, và bạn có thể sử dụng một layout khác kết hợp với Template Tags để đổ dữ liệu vào layout mới đó, tuy nhiên công việc này chỉ dừng lại ở mức thay đổi giao diện chứ không thể bổ sung thêm chức năng của website được. Vậy là vấn đề đã lộ dần ra rồi phải không nào? Bây giờ nếu mình muốn làm một trang web bán hàng thì phải làm thế nào? chẳng lẽ vào Core của WordPress để thay đổi, điều này thật không tốt chút nào.Vậy để giải quyết vấn đề trên thì WordPress cung cấp một chức năng tương đối giống với các phần mềm WinForm đó là cài đặt plugin.

1. Plugin WordPress là gì?

Plugin WordPress là một module xử lý một chức năng nào đó và module này sử dụng các API mà WordPress đã cung cấp để can thiệp vào Core thay vì sửa trực tiếp trong Core. Mỗi plugin có thê có nhiều file PHP, JS, CSS và chung quy lại chúng đều có chung một mục đích đó là đáp ứng một chức năng cụ thể trong Website. Hiện nay trên trang chủ của WordPress có hơn 11 ngìn plugins và chúng đang tăng dần theo thời gian, bạn có thể dễ dàng tìm kiếm một plugin nào đó rất dễ dàng bằng cách cung cấp từ khóa cần tìm.

Chúng ta chia làm hai đối tượng sử dụng Plugin chính như sau:

  • Người phát triển plugins: Đối tượng này dựa vào yêu cầu của chức năng kết hợp với các kiến thức lập trình WordPress để xây dựng plugin, sau khi xây dựng xong họ có thể bán hoặc public miễn phí cho người sử dụng.
  • Người sử dụng plugins: Đối tượng này chỉ cần tìm plugin phù hợp và kích hoạt là có thể sử dụng được.

Bạn đang thuộc đối tượng nào?

Nếu bạn thuộc đối tượng người sử dụng plugin thì bài này chỉ mang tính tham khảo, nghĩa là bạn chỉ cần đọc cho biết là được. Nhưng nếu bạn là một nhà phát triển plugin thì đòi hỏi bạn phải thành thao các kiến thức mà trong series này mình đề cập tới. Vì vậy hãy theo dõi từng bài để có một nền tảng vững chắc nhé.

Tóm lại

Nói tóm lại plugin trong WordPress là một module mở rộng nhằm giải quyết một bài toán, một chức năng cụ thể nào đó. Ví dụ bạn cần tạo website bán hàng thì bạn sẽ tạo một plugin bán hàng, bạn cần tạo website truyện thì bạn tạo một plugin truyện, như vậy sau này muốn tạo nhiều website truyện hoặc bán hàng thì chỉ việc cài đặt plugin đó là được chứ không mất công code lại từ đầu.

2. Cấu trúc một plugin trong WordPress

Mỗi plugin là file PHP chưa trong một folder hoặc là một file php nằm ở cấp ngoài cung của thư mục wp-content/plugins.

Ví dụ mình cần tạo một plugin tên là wp-learn thì mình sẽ tạo một folder nằm trong thư mục wp-content/plugins và một file tên là wp-learn.php (xem hình).

Bước tiên theo bạn cần phải khai báo thông tin của plugin trong file wp-learn.php nữa thì WordPress mới nhận diện được nhé. Cấu trúc như sau:

1
2
3
4
5
6
7
8
/**
Plugin Name: Tên Plugin
Plugin URI: URL Plugin trên wordpress.org
Description: Mô tả cho plugin
Author: Tên tác giả
Version: Version plugin
Author URI: Trang web tác giả
*/

Ok, bây giờ bạn sẽ viết nội dung cho file wp-learn.php như sau:

1
2
3
4
5
6
7
8
9
<?php
/**
Plugin Name: Learn WordPress
Description: Plugin dùng để học WordPress
Author: Nguyễn Văn Cường
Version: 1.0
*/

Bây giờ bạn vào trang admin của WordPress và chọn menu Plugin -> Installed Plugins thì sẽ thấy giao diện như sau:

Phần bôi đỏ chính là plugin mà chúng ta đã viết, bạn click vào chữ Activate mà mình đã gạch chân để kích hoạt plugin này. Vì hiện tại plugin này chưa code gì nên WordPress vẫn kích hoạt bình thường chứ không có lỗi.

Để rõ ràng hơn thì bạn mở file akismet.php nằm trong thư mục wp-content/plugins/akismet thì sẽ thấy nội dung như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
/**
 * @package Akismet
 */
/*
Plugin Name: Akismet
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet plan</a> to get an API key, and 3) Go to your Akismet configuration page, and save your API key.
Version: 3.1.10
Author: Automattic
License: GPLv2 or later
Text Domain: akismet
*/
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
Copyright 2005-2015 Automattic, Inc.
*/
// Make sure we don't expose any info if called directly
if ( !function_exists( 'add_action' ) ) {
    echo 'Hi there!  I\'m just a plugin, not much I can do when called directly.';
    exit;
}
define( 'AKISMET_VERSION', '3.1.10' );
define( 'AKISMET__MINIMUM_WP_VERSION', '3.2' );
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'AKISMET_DELETE_LIMIT', 100000 );
register_activation_hook( __FILE__, array( 'Akismet', 'plugin_activation' ) );
register_deactivation_hook( __FILE__, array( 'Akismet', 'plugin_deactivation' ) );
require_once( AKISMET__PLUGIN_DIR . 'class.akismet.php' );
require_once( AKISMET__PLUGIN_DIR . 'class.akismet-widget.php' );
add_action( 'init', array( 'Akismet', 'init' ) );
if ( is_admin() ) {
    require_once( AKISMET__PLUGIN_DIR . 'class.akismet-admin.php' );
    add_action( 'init', array( 'Akismet_Admin', 'init' ) );
}
//add wrapper class around deprecated akismet functions that are referenced elsewhere
require_once( AKISMET__PLUGIN_DIR . 'wrapper.php' );

Tạm thời ta không quan tâm là trong đó nó viết gì mà chỉ quan tâm đến đoạn code giới thiệu plugin như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * @package Akismet
 */
/*
Plugin Name: Akismet
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet plan</a> to get an API key, and 3) Go to your Akismet configuration page, and save your API key.
Version: 3.1.10
Author: Automattic
License: GPLv2 or later
Text Domain: akismet
*/

Như vậy đây chính là đoạn mã LUÔN LUÔN PHẢI CÓ trong một plugin WordPress nhé các bạn.

3. Lời kết

Qua bài này bạn đã biết được WordPress là gì và cấu trúc một plugin căn bản của WordPress. Đây là bài đầu tiên trong series học WordPress nâng cao nên có gì thiếu sót mong các bạn thông cảm và góp ý tích cực.

Lưu ý là kể từ các bài sau mình sẽ sử dụng plugin này để demo các ví dụ luôn nhé các bạn.

Nguồn: freetuts.net

Bài 03: Giới thiệu trang quản trị WordPress

0

Kết thúc bài trước thì bạn đã biết cách cài đặt WordPress trên localhost rồi, tuy nhiên bạn cần phải tìm hiểu nhiều thứ hơn nữa mới có thể sử dụng và quản lý hệ thống WordPress một cách tốt nhất. Bước đầu tiên là bạn cần phải đăng nhập vào hệ thống, nhìn danh sách menu của trang quản trị và hãy tìm hiểu tất cả các đối tượng của hệ thống menu đó. Tuy nhiên nếu các bạn tự tìm hiểu thì sẽ hơi khó khăn nên trong series này mình sẽ trình bày lần lượt tất cả các thành phần đó, và bài đầu tiên mình sẽ giới thiệu sơ lược về hệ thống menu trong WordPress. Do chỉ giới thiệu sơ lược tính năng của các menu vì thế bài viết sẽ rất ngắn, tuy nhiên bạn cũng đừng quá lo lắng vì mỗi menu như vậy mình sẽ giải thích thật chi tiết trong một bài cụ thể trong series.

1. Đăng nhập vào trang quản trị WordPress

Quay lại bài trước tại bước nhập tên đăng nhập và mật khẩu của admin, bạn hãy nhớ lại hai thông tin đó để chúng ta sử dụng nhé.

Đầu tiên bạn vào đường dẫn http://localhost/wordpress/admin thì sẽ xuất hiện một form đăng nhập như hình dưới đây.

Tại đây bạn hãy nhập thông tin username và password mà ở bài cài đặt bạn đã thiết lập ở bài trước, nếu bạn nhập thông tin sai thì hệ thống sẽ báo bạn nhập lại, ngược lại hệ thống sẽ chuyển bạn đến trang quản lý WordPress.

2. Danh sách hệ thống menu trong WordPress

Có rất nhiều menu trong admin nhưng nếu bạn là một người sử dụng bình thường thì mình chắc chắn là bạn không thể nào sử dụng hết đượ. Tuy nhiên bạn cũng nên tìm hiểu để sau này có thể tự mình quản trị được website nhé.

Trong danh sách hệ thống menu trong admin thì lần lượt mỗi menu có chức năng như sau:

  1. Dashboard: Trang thống kê website, nơi thông báo các thông tin cập nhật về plugin, theme, thống kê bình luận, bài viết, …
  2. Posts: Trang quản lý thể loại bài viết. Ví dụ bạn tạo website tin tức thì đây là nơi quản lý các chuyên mục, các bài viết tin tức.
  3. Media: Trang quản lý các tập tin hình ảnh, video, audio, xml, …
  4. Pages: Quản lý danh sách các trang. Ví dụ trong website có một số trang đặc biệt như trang giới thiệu, trang quy định, … đây là những loại trang không thuộc một chuyên mục nào.
  5. Comments: Trang quản lý bình luận trên website.
  6. Appearance: Trang quản lý danh sách các themes, widget, menu, customize themes
  7. Plugins: Trang quản lý danh sách các plugin (tính năng mở rộng)
  8. Users: Trang quản lý thành viên
  9. Tools: Trang quản lý nhập/xuất các tập tin lưu trữ dữ liệu bài viết của website
  10. Settings: Quản lý các thông số cấu hình quan trọng của website.

Đây là danh sách menu mặc định khi bạn mới cài đặt WordPress, danh sách này có thể được thay đổi nếu lập trình viên xử lý trong theme mà bạn đang sử dụng.

3. Lời kết

Như vậy các bạn vừa đi qua việc tìm hiểu sơ lược các tính năng của từng menu bên trong trang quản trị của WordPress. Bài tiếp theo chúng ta sẽ cùng nhau tìm hiểu các thông số trong mục cấu hình (setting) nhé, sau này bạn sẽ sử dụng các thông số này rất nhiều đấy.

Nguồn: freetuts.net

Bài 02: Cài đặt WordPress trên localhost

0

WordPress được lập trình bằng ngôn ngữ PHP và sử dụng MySQL để lưu trữ, vì vậy để cài đặt WordPress trên máy tính cá nhân thì bạn cần phải cài đặt một môi trường chạy web ngay chính trên máy tính mà bạn muốn học WordPress, môi trường chạy web này ta gọi là web server ảo.

Để có một web server ảo thì bạn sử dụng google để tìm kiếm, sẽ có rất nhiều phần mềm như là Xampp, Vertrigo, Wampp, … và hãy lựa chọn một phần mềm phù hợp nhất với bạn để bắt đầu chinh phục WordPress. Ở đây mình sử dụng phần mềm quen thuộc đó là Xampp, còn các bạn nếu sử dụng Vertrigo thì xem lại bài hướng dẫn cài đặt Vertrigo Server. Nhưng để tiện việc hỗ trợ hỏi đáp thì mình nghĩ bạn cũng nên sử dụng Xammp luôn cho giống mình, bạn vào bài hướng dẫn cài đặt Xampp để thực hiện cài nhé.

1. Download mã nguồn WordPress

Đầu tiên các bạn cần phải download mã nguồn WordPress mới nhất tại đường dẫn https://wordpress.org/latest.zip

Giải nén file vừa download về bạn sẽ thấy folder wordpress nằm trong đó và sau đó bạn chỉ việc copy folder đó vào folder C:\\xampp\htdocs\, đây là folder chứa các mã nguồn để chạy trên localhost, mọi mã nguồn đều bắt buộc phải nằm trong đây thì mới có thể hoạt động được.

Lúc này bạn không cần phải quan tâm tới các folder nằm bên trong folder wordpress đâu, vì có giải thích thì các bạn cũng sẽ không thể nào hiểu được hết nguyên lý hoạt động của từng folder đó. Lúc này các bạn chỉ cần nắm bắt cách cài đặt WordPress là đủ rồi.

2. Cài đặt WordPress trên localhost

Để thực hiện việc cài đặt thì các bạn mở bất kỳ trình duyệt nào lên cũng được và nhập vào thanh địa chỉ web với đường dẫn là http://localhost/wordpress, wordpress chính là tên folder mà các bạn giải nén vào localhost. Nếu bạn nào có thay đổi tên folder chứa mã nguồn WordPress thì thay đổi lại đường dẫn trên cho phù hợp nhé.

Bước 1: Chọn ngôn ngữ

Nếu mọi việc diễn ra suôn sẽ thì trình duyệt sẽ trả về kết quả như hình.

Hệ thống WordPress sẽ yêu cầu bạn lựa chọn ngôn ngữ cho lần cài đặt đầu tiên, nếu như ở các phiên bản cũ thì WordPress không hỗ trợ ngôn ngữ tiếng việt, vì vậy với các phiên bản cũ nếu bạn muốn sử dụng ngôn ngữ tiếng việt thì bắt buộc phải tự cài đặt bằng tay thêm vào.

Tuy nhiên từ phiên bản 4.x trở lên thì WordPress đã tích hợp gói ngôn ngữ tiếng việt vào hệ thống, các bạn có quyền lựa chọn ngôn ngữ tiếng việt ngay lần cài đặt đầu tiên, trong series này mình sẽ chọn ngôn ngữ tiếng Anh. Lựa chọn ngôn ngữ xong thì các bạn nhấn vào nút Continue.

Bước 2: Xem thông tin cấu hình

Lúc này hệ thống sẽ nhắc nhở bạn về một số thông tin cấn thiết trước khi tiến hành cài đặt WordPress, sau khi đọc xong thì các bạn tiếp tục nhấn vào nút Let’s go để hệ thống đưa bạn tới trang thiết lập cấu hình.

Bước 3: Cấu hình database

Trước tiên bạn tạo một database với tên là wordpress, tiếp theo bạn nhập vào các thông tin liên quan tới username, password và database vào giao diện dưới đây.

  • Tên cơ sở dữ liệu: Là tên database mà các bạn đã khởi tạo trong phpmyadmin
  • Tên đăng nhập: Mặc định Xamp luôn có tên là root
  • Mật khẩu: Do mình đang dùng xampp nên mật khẩu sẽ để rỗng
  • Địa chỉ máy chủ CSDL: Giữ nguyên localhost
  • Tiền tố bảng dữ liệu: Nên thay đổi nếu như website của bạn muốn bảo mật tốt hơn, còn không thì giữ nguyên

Nhập xong toàn bộ thông tin thì bạn hãy nhấn nút Submit để làm bước kế tiếp, nếu thông tin sai thì nó sẽ yêu cầu bạn nhập lại bằng cách click vào nút Try Again.

Bước 4: Bắt đầu cài đặt

Nếu toàn bộ thông tin bạn nhập ở trên chính xác thì trình duyệt sẽ tự động chuyển tới một trang giống như hình bên dưới.

Nhấn vào nút Run the install, để chúng ta đi tới bước cuối cùng trong quá trình cài đặt WordPress.

Bước 5: Nhập thông tin tài khoản admin

Ở bước cuối cùng này thì các bạn chỉ cần điền các thông tin quan trọng của website như là tiêu đề trang web, tên đăng nhập cùng mật khẩu của admin và email của bạn nữa. Nếu bạn muốn website được các công cụ tìm kiếm đánh dấu thì check vào ô ‘cho phép các công cụ tìm kiếm đánh chỉ mục trang mạng này‘.

Nhập xong toàn bộ thông tin thì hãy nhấn nút Install WordPress.

Quá trình cài đặt sẽ diễn ra trong vài phút, nhanh nhất là một phút và nếu như không có gì xảy ra trong quá trình cài đặt thì trình duyệt sẽ chuyển bạn sang một trang với nội dung là thông báo việc cài đặt đã thành công giống như hình sau.

Bạn nhấn vào nút đăng nhập thì trình duyệt sẽ chuyển bạn đến trang admin của WordPress với thông tin đăng nhập là thông tin mà bạn đã tạo ở bước 5, còn nếu bạn muốn xem giao diện trang chủ thì bạn truy cập vào đường dẫn http://localhost/wordpress.

3. Lời kết

Hy vọng với bài này thì các bạn sẽ biết cách cài đặt WordPress nhanh nhất, bài viết tuy ngắn nhưng với đầy đủ hình ảnh minh họa trực quan và rất chi tiết thì mình tin rằng ai cũng sẽ làm được. Hãy tiếp tục ủng hộ mình ở các bài tiếp theo nhé.

Nguồn: freetuts.net

Bài 01: WordPress là gì? WordPress Developer là gì?

0

WordPress là một CMS được phát triển trên ngôn ngữ lập trình PHP, đây là một CMS được sử dụng rất phổ biến và rộng rãi không chỉ ở Việt Nam mà trên toàn thế giới. Nhằm giúp các cá nhân muốn sử dụng thành thạo hệ thống quản lý trong WordPress thì trong series này mình sẽ giới thiệu từng bước các quản lý một trang web trong WordPress. Trước tiên chúng ta phải tìm hiểu khái niệm WordPress là gì đã nhé.

1. WordPress là gì?

WordPress là một CMS được xây dựng từ ngôn ngữ lập trình PHP và sử dụng hệ quản trị CSDL MySQL để lưu trữ. WordPress được phát triển bởi Michel Valdrighi và public hoàn toàn miễn phí (Open Source). Tính tới thời điện hiện tại thì version mới nhất của WordPress là Version 4.7, bạn có thể download WordPress tại trang chủ của nó. Sử dụng WordPress bạn sẽ có cảm giác như đang sử dụng một phần mềm trên máy tính bởi nó có nhiều tính năng rất chuyên nghiệp như setup, tự tải và cài đặt các plugin trên internet, hệ thống thông báo tự động.

Trước đây WordPress được ví như một CMS thường sử dụng cho cho cá nhân tạo blog hay các doanh nghiệp tạo website đơn giản để quảng bá thương hiệu. Tuy nhiên đến thời điểm hiện tại thì nó không còn là một Blog CMS nũa mà trở thành một công cụ tạo ra nhiều loại website khác nhau, trong đó có cả website mảng thương mại điện tử.

Về khái niệm WordPress là gì có lẽ mình không trình bày thêm nữa, Bây giờ ta tìm hiểu một số vấn đề liên quan đến WordPress.

WordPress có cộng đồng đông đảo

Điều này hoàn toàn đúng, WordPress được sử dụng khá rộng rãi nên có khá nhiều lập trình viên tham gia phát triển và sử dụng WordPress. Không những vậy, hiện nay ngày càng xuất hiện nhiều website cung cấp các Theme WordPress như MyThemeShop.comThemeForest.com nên bạn dễ dàng chọn một mẫu giao diện ưng ý cho riêng mình. Người ta tính trung bình hiện nay có xấp xỉ khoảng 20% các website nổi tiếng trên thế đang giới sử dụng WordPress.

Nếu bạn gặp một lỗi nào đó trong quá trình sử dụng WordPress thì dễ dàng tìm kiếm trên Google hoặc tham gia các cộng đồng WordPress trên facebook hoặc các forum, đảm bảo bạn sẽ có câu trả lời ưng ý ngay.

Về mặt lập trình và phát triển thì hiện nay có rát nhiều blog chia sẻ kiến thức về lập trình website WordPress hoan toàn miễn phí nên lập trình viên mới vào nghề dễ dàng tiếp cận CMS này. Ngoài ra còn có nhiều website cung cấp các khóa học lập trình WordPress rất chuyên nghiệp như udemy.com, lynda.com …

WordPress dễ sử dụng

Nếu đứng về phía khách hàng thì họ đánh giá WordPress khó sử dụng, nhưng nếu họ bỏ chút thời gian tìm hiểu các module trong hệ thống và các chức năng quản lý Plugin, Widget, Menu thì lúc đó công việc quản lý là quá đơn giản.

Nếu đứng về phía lập trình viên thì thời gian để tạo ra một website bằng WordPress thì rất nhanh so với việc tự code bằng PHP thuần, lý do là WordPress đã cung cấp đầy đủ các tính năng cần thiết cho một website rồi nên công việc của lập trình viên chỉ là dựa vào mẫu giao diện để tạo thành website.

WordPress hỗ trợ đa ngôn ngữ

WordPress cung cấp nhiều gói với nhiều ngôn ngữ khác nhau. Trước đây thì tiếng Việt chưa hỗ trợ nhưng hiện tại thì tin vui cho các bạn là nó đã hỗ trợ tiếng Việt rồi, vì vậy đối với những khách hàng không rành tiếng Anh thì bạn hãy chọn gói Tiếng Việt để họ dễ sử dụng nhé.

Và còn nhiều tính năng nữa nhưng mình nghĩ bạn sẽ tìm thấy nó trong loạt bài tìm hiểu lập trình theme WordPress này, vì vậy mình sẽ không trình bày thêm.

2. WordPress Developer là gì?

Để hiểu rõ WordPress Developer là gì thì bạn cần phải phân biệt hai khái niệm đó là Lập trình web & Tạo web khác nhau ở điểm nào. Đầu tiên thì mình sẽ trình bày sơ lược về tạo web trước nhé.

Tạo web

Khái niệm tạo Web thường dùng cho những người không chuyên về lập trình, họ thường sử dụng các công cụ có sẵn hoặc các mã nguồn có sẵn để tạo ra các website. Như vậy các đối tượng này phải học cách sử dụng công cụ và CMS đó mới có thể làm tạo được. Hiện nay cũng có khá nhiều platform cho phép bạn tạo web online như blogspot.

Lập trình web

Khái niệm này dùng để mô tả đối với các lập trình viên đang sở hữu các kỹ năng như HTML & CSS, PHP – MYSQL, Javascript để xây dựng website. Công việc của họ là dựa vào yêu cầu khách hàng để phân tích hệ thống CSDL, dựa vào mẫu thiết kế từ Photoshop để chuyển thành một website động. Như vậy đối với Web Developer thì việc bắt tay vào xây dựng một ứng dụng web sẽ tốn khá nhiều thời gian và công sức, tuy nhiên bù lại thì họ sẽ dễ dàng quản lý và nâng cấp website.

Bây giờ tới chủ đề chính trong phần này đó là khái niệm WordPress Developer là gì?

WordPress Developer là một nhà phát triển website dựa trên nền tảng mã nguồn mở của WordPress, tức là bạn sẽ tự tay xây dựng các loại Themes cũng như viết mới các Plugin chạy trên nền WordPress. Để làm được những điều này thì bạn cần phải trang bị những kiến thức cần có của một người lập trình web mà mình đã đề cập trên.

WordPress có cấu trúc folder khá tốt, dễ phát triển và mở rộng, tuy nhiên chỉ với những kỹ năng trên thì vẫn chưa đủ mà các bạn cần phải tham khảo những function mà WordPress cung cấp sẵn cho developer trên trang WordPress Codex. Tại đây bạn sẽ tìm thấy các API cũng như danh sách Hooks khá phong phú giúp cho việc xây dựng website bằng WordPress sẽ dễ dàng hơn.

3. Lời kết

Qua bài này chắc hẳn bạn đã hiểu được phần nào hai khái niệm WordPress là gì và WordPress Developer là gì rồi nhỉ? Nếu vẫn chưa hiểu thì hãy tham khảo các nguồn khác trên Internet nhé.

Và tóm lại kết thúc bài này mình muốn giới thiệu với các bạn rằng kể từ bài tiếp theo mình sẽ bắt đầu loạt serie học lập trình theme WordPress, đây là loạt bài học hoàn toàn miễn phí và step by step nên rất phù hợp với newbie hoặc những bạn có chút skill rồi nhưng không biết quy trình học. Hẹn gặp lại các bạn ở bài tiếp theo.

Nguồn: freetuts.net

Hàm get_template_part() trong wordpress

0

Trong bài các file quan trọng theme wordpress mình có sử dụng một số hàm của wordpress để gọi các file như header, footer, sidebar và searchform. Nhưng trong trường hợp ta có một file nào đó mà không nằm trong danh sách của nó mà vẫn muốn load vào thì làm thế nào? Để trả lời câu hỏi này thì ta tìm hiểu hàm get_template_part() trong wordpress nhé.

1. Cách dùng hàm get_template_part() trong wordpress

Hàm này có tác dụng load một phần template nhỏ nào đó vào một template khác một cách đơn giản. Ở đây không phải footer, header, sidebar vì nó có các hàm khác hỗ trợ rồi.

Hàm này có hai tham số, tham số thứ nhất là {slug} và tham số thứ hai là {name}, để rõ hơn ta xem cấu trúc của nó như sau:

1
2
3
<?php get_template_part( $slug ); ?>
<?php get_template_part( $slug, $name ); ?>

Trong đó:

  • Nếu dùng một tham số $slug thì wordpress sẽ load file có tên là {$slug}.php, nghĩa là ta không cần phải thêm phần đuôi .php vào mà nó tự thêm sẵn rồi
  • Nếu dùng hai tham số là $slug và $name thì wordpress sẽ load file có tên là {$slug-$name}.php, nghĩa là nó nối phần slug và name lại với nhau cách nhau bởi dấu gạch ngang (-)

2. Ví dụ sử dụng hàm get_template_parth() trong wordpress

Sử dụng một tham số

1
<?php get_template_part( 'book' ); ?>

Đoạn code này sẽ load file có tên là book.php nằm cấp ngoài cùng của theme. Như vậy khi load file ta không cần truyền phần mở rộng .php vì nó tự thêm sẵn cho ta rồi.

Sử dụng hai tham số

1
<?php get_template_part( 'book', 'block' ); ?>

Đoạn code này sẽ load file có tên là book-block.php nằm ngoài cùng của theme. Như vậy WordPress sẽ tự động nối $slug và $name lại với nhau cách bởi dấu phẩy và thêm phần mở rộng .php

3. Lời kết

Việc sử dụng hàm get_template_part() chỉ dùng với những file không có hộ trợ trong WordPress. Ví dụ các file header.php, footer.php thì đã có các hàm get_header() và get_footer() rồi nên không sử dụng hàm get_template_part()trong wordpress để load nó.

Nguồn: freetuts.net

Các file cần thiết trong theme WordPress

0

Trong bài này chúng ta sẽ tìm hiểu cấu trúc folder của một theme trong WordPress được xây dựng như thế nào, chức năng của từng file, từng folder hoạt động ra sao. Bài này tương đối đơn giản và phù hợp với những bạn mới tìm hiểu WordPress, mình cũng là một trong số đó nên nếu bạn đang muốn học WordPress thì hãy cùng mình xây dựng nên serie này nhé.

1. Các files cần thiết theme WordPress

WordPress là một CMS được xây dựng các chức năng sẵn và nhiệm vụ của coder là dựa trên cấu trúc đó xây dựng thành những ứng dụng khác nhau, nhưng chung quy lại thì các ứng dụng đó hoạt động chung một hệ thống CSDL của WordPress. Tại sao phải như vậy? Lý do đơn giản nếu như bạn cố tình thay đổi hệ thống database thì khi bạn cần nâng cấp lên Version mới thì coi như code của bạn vứt xọt rác, hoặc là bạn phải dev lại. Một lý do nữa là nếu bạn cố tình phá source của nó thì việc được cộng đồng hỗ trợ là điều không thể và đó sẽ là bất lơi đối với bạn.

Sau đây là danh sách các files cần thiết của một  theme WordPress mà mình tìm hiểu trên trang chủ codex của nó.

Trong đó folder myshop là tên theme của bạn, các files còn lại chính là những files cần phải có trong theme wordpress. Cũng có một số file bạn không tạo thì wordpress cũng không bắt lỗi nhưng nếu người dùng truy vấn vào file đó mà không có thì sẽ in ra lỗi 404.

2. Phân chia cấu trúc header, footer, sidebar

Như bạn biết một trang web thông thường chúng ta sẽ chia ra thành các phần nhỏ như header, footer, sidebar-left, sidebar-right, … Việc chia nhỏ này giúp chúng ta code nhanh gọn hơn, các file chính chỉ việc gọi vào là xong, đây cũng là những file cần thiết trong theme wordpress. Sau đây là danh sách các file thường được phân chia nhỏ ra trong wordpress.

Ý nghĩa của từng file thể hiện rõ ở  tên file rồi nhỉ. Bây giờ ta tìm hiểu cách import nó vào file chính.

Thông thường để import một file php vào php thì chúng ta sử dụng lệnh require hoặc include, nhưng ở đây chúng ta đang làm việc với WordPress nên nó cung cấp một số hàm xử lý vụ này. Cụ thể như sau:

  • header.php: dùng lệnh get_header().
  • footer.php: dùng lệnh get_footer().
  • sidebar.php: dùng lệnh get_sidebar().
  • searchform.php: dùng lệnh get_search_form().

Riêng đối với sidebar-left.php và sidebar-right.php là các tên do người dùng tự đặt với tiền tố là sidebar_, còn chữ phía sau (left, right) là do người dùng tự định nghĩa. Ví dụ giờ mình cần định nghĩa một file sidebar nằm ở giữa thì mình tự đặt tên nó là sidebar-middle.php. Để load nó thì ta dùng hàm  get_sidebar($name) và tham số $name chính là tên hậu tố của file (left, right, middle).

3. Ví dụ chia nhỏ các file trong theme WordPress

Bây giờ ta làm một ví dụ nhỏ nhỏ đó là tạo một template mẫu đơn giản, sau đó chia các file này thành các phần header, footer, sidebar-left, sidebar-right. Sau đó tại file index.php sẽ gọi lần lượt vào.

Bạn xây dựng các files có cấu trúc folder như sau:

Giả sử ta có template với cấu trúc như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div id="header">
            NỘI DUNG HEADER
        </div>
        <div id="container">
            <div id="sidebar-left">
                NỘI DUNG SIDEBAR LEFT
            </div>
            <div id="content">
                NỘI DUNG CONTENT CHÍNH
            </div>
            <div id="sidebar-right">
                NỘI DUNG SIDEBAR RIGHT
            </div>
        </div>
        <div id="footer">
            NỘI DUNG FOOTER
        </div>
    </body>
</html>

Lúc này ta sẽ phân vùng các khối như hình dưới đây:

phan-vung-cac-file-trong-wordpress.png

Dựa vào cấu trúc file bây giờ ta sẽ chia nhỏ ra như sau:

File header.php

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div id="header">
            NỘI DUNG HEADER
        </div>

File footer.php

1
2
3
4
5
        <div id="footer">
            NỘI DUNG FOOTER
        </div>
    </body>
</html>

File sidebar-left.php

1
2
3
<div id="sidebar-left">
    NỘI DUNG SIDEBAR LEFT
</div>

File sidebar-right.php

1
2
3
<div id="sidebar-right">
    NỘI DUNG SIDEBAR RIGHT
</div>

Bây giờ tới hai file chính là index.php và single.php. Lưu ý với bạn rằng đây chỉ là demo nho nhỏ nên mình chỉ cắt cho hai file này thôi, các file còn lại tương tự nhé.

File index.php

1
2
3
4
5
6
7
8
9
<?php get_header(); ?>
        <div id="container">
            <?php get_sidebar('left'); ?>
            <div id="content">
                TRANG INDEX
            </div>
            <?php get_sidebar('right'); ?>
        </div>
<?php get_footer(); ?>

File single.php

1
2
3
4
5
6
7
8
9
<?php get_header(); ?>
        <div id="container">
            <?php get_sidebar('left'); ?>
            <div id="content">
                TRANG SINGLE
            </div>
            <?php get_sidebar('right'); ?>
        </div>
<?php get_footer(); ?>

Lời kết

Trong bài này chúng ta chỉ tìm hiểu cấu trúc các file cần thiết trong WordPress và ý nghĩa của từng file riêng, chúng ta chỉ tìm hiểu ở mức tổng quát chứ không đi sâu vào làm theme nhé các bạn, và đây chỉ là cấu trúc demo thôi chứ khi các bạn làm theme sẽ có thêm nhiều file tự định nghĩa lấy nữa. Tuy bài đơn giản nhưng rất hữu ích với những bạn mới tìm hiểu wordpress và đi sâu vào lập trình wordpress nâng cao.

Nguồn: freetuts.net

Tìm hiểu quy trình load model trong codeigniter

0

Việc load model rất quen thuộc với những bạn sử dụng framwork codeigniter nhưng đôi lúc ta lại tò mò không biết quá trình nó load như thế nào, bài này tôi và các bạn sẽ tìm hiểu quy trình load model như thế nào nhé.

Function load model codeigniter nằm ở đâu?

Đây là câu hỏi đầu tiên để tìm hiểu một chức năng, đối tượng trong một framwork nào đó, và cách đơn giản nhất các bạn hãy dùng chương trình search project của các editor, ở đây tui dùng netbeans để search và tôi đã tìm ra nó nằm trong file system/core/Loader.php. Các bạn mở file này lên và tìm tới dòng 232 sẽ có một function load model như sau:

Nhìn hơi căng nhỉ, bây giờ ta sẽ mổ xẻ nó nhé

Mổ xẻ function load model trong codeigniter

tham số truyền vào

Trong function load model có 3 tham số truyền vào gồm $model, $name, $db_conn, trong đó:

  • $model là tên model cần load, có thể truyền vào một mảng danh sách các model cần load nhưng trường hợp này tham số $name sẽ không có tác dụng.
  • $name là tên alias mà bạn muốn sau khi load model nó sẽ gán vào instance của Codeigniter
  • $db_conn là tên database mà bạn khai báo ở file application/config/database.php, mặc định là defaul

code xử lý bên trong hàm

Ta có quy trình xử lý gọi model trong codeigniter như sau:

Đoạn 1:

Qua phần comment giải thích tôi đã nói rõ rồi phải không nào. Riêng phần gọi lại đệ quy hơi khó chút xíu, tức là nếu model truyền vào là một danh sách thì sẽ lặp các mảng và load lại từng model một, các bạn có thể tham khảo bài đệ quy trong php để tìm hiểu thêm nhé.

Đoạn 2:

Đoạn 3:

Trong đoạn code này nó sẽ kiểm tra model truyền vào có phải dạng subfolder hay không, ví dụ news/category_model.phpshop/news/category_model.php.

Biến $last_slash là vị trí xuất hiện dấu / cuối cùng trong chuỗi string model nhập vào, dựa vào vị trí này ta lấy được đường dẫn đến file model $path và tên model $model bằng cách dùng hàm substr($string, $start, $end), nếu bạn chưa biết cách sử dụng hàm substr này thì đọc qua bài này nhé.

Đoạn 4:

Đoạn code 1 kiểm tra xem biến alias $name có truyền vào hay không, nếu không thì lấy tên model làm alias luôn, tức là  $name = $model.

Đoạn code 2 kiểm tra xem model này có nằm trong danh sách model đã load của hệ thông hay không, nếu có tức là load rồi nên không cần load lại làm gì.

Đoạn code 3 kiểm tra tên alias có trong danh sách đối tượng load của CI chưa (gồm library, model), nếu có rồi thì ngưng không xử lý tiếp, điều này có nghĩa giả sử bạn 1 model tên newsvà một library tên news, nếu bạn load library newstrước sau đó load model news thì model này sẽ không được load, bởi vì đối tượng news đã tồn tại trong hệ thống CI.

Đoạn 5:

Đoạn này sẽ đưa tên model về chữ thường, phòng trường hợp bạn truyền tên model vào có chữ hoa.

Đoạn 6:

Đoạn này hơi căng nên các bạn đọc phần comment nhé. Mình sẽ giải thích một hàm quan trọng đó là hàm load_class('Model', 'core'), hàm này có ý nghĩa load thư viện Model nằm trong folder core của system, như vậy muốn load file nào trong hệ thống nào thì chỉ cần truyền vào tên file và tên hệ thống, ví dụ:

load_class('Loader', 'core') load file Loader.php trong thư mục core của system.

load_class('Router', 'core') load file Router.php nằm trong thư mục core của system

Khai Báo Thêm Một Thư Mục Chứa Model

Phần này rất có ích với những bạn muốn custom bộ core của CI nên nếu có hứng thì  bạn nên xem kỹ nhé.

Trước tiên tôi sẽ giải thích thư mục chứa folder là gì? Như bạn biết mặc định hệ thống có một thư mục chứa danh sách model đó là application/models, và thư mục chứa library là application/libraries, vậy thêm một thư mục chứa model tức là thêm một thư mục nào đó để chứa model, ví dụ thư mục application/my_model_folder.

Như tôi giải thích ở trên hàm load model sẽ duyệt qua hết danh sách các thư mục chứa model nên việc bạn tạo model ở thư mục nào nó đều load được.

Để thêm một thư mục ta dùng hàm sau trong file system/core/Loader.php, tức là cùng file với hàm load model.

Hàm này sẽ thêm một thư mục chứa các thư viện model, library, helper. Như vậy ở controller ta sẽ thêm nó bằng cách sau.

Bạn tạo 1 folder tên models trong thư mục third_party.

Sau đó ở controller nào đó bạn thêm dòng này

Như vậy là folder third_party/models cũng có thể chứa model của bạn.

Nhưng lời khuyên là không nên dùng hàm này ở controller, vì như vậy controller nào ta cũng phải thêm đoạn code add package này. Giải pháp là bạn tạo một file MY_Loader trong application/core, nếu bạn chưa  biết tạo thì tham khảo tại đây, sau đó copy nội dung này vào.

Vậy là xong.

Lời kết

Bài viết này dành cho những bạn có kiến thức sử dụng codeigniter thuần thục muốn tìm hiểu nâng cao bộ core của Codeigniter để dễ dàng custom trong quá trình làm việc. Hy vọng qua bài tìm hiểu quy trình load model này sẽ giải đáp được một số thắc mắc của các bạn, xin chào và hẹn gặp lại ở một bài gần nhất.

Nguồn: freetuts.net

Tự tạo thư viện load widget trong codeigniter

0

Như các bạn biết mặc định hệ thống của Codeigniter hoạt động theo mô hình MVC, như vậy ở một controller bắt buộc phải load tất cả các phần header, footer, slidebar, … điều này đôi khi làm làm phiền toái cho coder vì khó quản lý nó. Vậy hôm nay mình sẽ hướng dẫn các bạn tự viết một thư viện load widget.

Widget có thể coi là một block, một thành phần của website, hiện tại trên mạng có rất nhiều thư viện load widget và các bạn có thể download về và sử dụng nhưng tôi nghĩ các bạn cũng nên đọc qua bài này  vì trong bài sẽ giải thích cách bạn viết một thư viện ngoài.

Trước khi vào viết tôi giới thiệu cấu trúc folder widget như sau:

Các bạn thấy tôi đã tạo một folder widgets trong folder application. và mỗi widget sẽ có 2 file chính là controller và view, trong đó file controller dùng để xử lý và gọi đến file view để hiển thị.

Viết thư viện cho controller widget

Để hiểu được phần này bạn phải đọc qua bài overwrite bộ core trong codeigniter nhé

Trước tiên các bạn vào thư mục application/core tạo một file MY_Widget.php và MY_Loader.php có nội dung như sau:

File MY_Widget.php

Hàm này dành cho các controller trong widget extends tới nó. Mặc định tất cả các lớp  controller trong widget đều tuân theo quy tắc đặt tên chữ hoa đầu tiên và tên lớp bắt đầu bằng tên folder sau đó kèm với chữ _widget.

File widgets/header/controller.php có nội dung như sau:

Nội dung của file này là tạo một controller với tên Header_widget kế thừa lớp MY_Widget và cuối cùng là load file view.phptương ứng bên dưới nó.

File widgets/header/views.php có nội dung như sau:

Vậy là bạn đã tạo được một widget thành công rồi, bước tiếp theo là ta sẽ tạo một hàm load widget dành cho controller chính.

Viết hàm load widget

Hàm này tôi sẽ viết nó trong file MY_Loader với nội dung như sau:

Trong đó đoạn code require 'MY_Widget.php'; sẽ load file MY_Widget vào hệ thống, nếu như không có dòng này thì trong các controller widget không thể extends lớp này được vì nó không tồn tại.

Hàm widget có 2 tham số truyền vào, $widget_directory là đường dẫn đến widget cần load,$agrs là mảng các biến muốn truyền vào widget

Đoạn code dưới đây dùng để thiết lập vị trí view cho widget

Và sau khi load widget thì trả lại vị trí view cho folder view chính của hệ thống

Gọi Widget Từ Controller Chính

Bạn tạo một controller welcome.php với nội dung như sau:1

Nhìn vào code đơn giản đúng không nào, để load widget thì chỉ cần gọi $this->load->widget('widget_name', array('cac_bien_truyen_vao'))

Bạn chạy controller này lên màn hình sẽ xuất hiện dòng chữ Đây là header, và đây cũng chính là nội dung trong file view của widget header.

Truyền biến vào widget

Đôi lúc ta cũng cần truyền biến vào widget để xử lý, ta làm như sau:

Controller welcome.php

File widgets/header/controller.php

File widgets/header/view.php

Thật đơn giản đúng không nào, muốn truyền biến qua widget thì khai báo hàm load widget và bên controller widget sẽ nhận với các biến tương ứng.

Load Model, Library, Helper trong widget

Ở mỗi widget ta load model, helper, library, language một cách bình thường nhé, vì bản chất nó cũng là instance của codeigniter.

Ví dụ:

$this->load->view()

$this->load->model()

$this->load->library()

$this->load->helper()

Lời kết

Qua bài này các bạn có thể tự tạo cho mình một thư xử lý widget rồi đúng không nào, đoạn code mình viết có thể chưa tối ưu nên nếu các bạn có ý kiến khác thì hãy bổ sung góp ý giúp mình với nhé, và mình có gửi file Download đính kèm. Cuối cùng cám ơn các bạn đã đọc bài này và chúc các bạn vui vẻ khi tham gia freetuts.net.

Nguồn: freetuts.net