
{"id":9816,"date":"2025-05-01T20:46:04","date_gmt":"2025-05-01T13:46:04","guid":{"rendered":"https:\/\/tapchicntt.com\/?p=9816"},"modified":"2025-05-01T20:54:04","modified_gmt":"2025-05-01T13:54:04","slug":"wordpress-mot-so-action-hook-thuong-dung","status":"publish","type":"post","link":"https:\/\/tapchicntt.com\/wordpress-mot-so-action-hook-thuong-dung\/","title":{"rendered":"[WordPress] M\u1ed9t s\u1ed1 action hook th\u01b0\u1eddng d\u00f9ng"},"content":{"rendered":"\n<p>Action Hook trong WordPress l\u00e0 c\u00e1c \u0111i\u1ec3m trong qu\u00e1 tr\u00ecnh x\u1eed l\u00fd m\u00e3 ngu\u1ed3n m\u00e0 t\u1ea1i \u0111\u00f3 b\u1ea1n c\u00f3 th\u1ec3 &#8220;m\u00f3c&#8221; c\u00e1c h\u00e0m t\u00f9y ch\u1ec9nh c\u1ee7a m\u00ecnh \u0111\u1ec3 th\u1ef1c hi\u1ec7n m\u1ed9t h\u00e0nh \u0111\u1ed9ng n\u00e0o \u0111\u00f3. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 Action Hook ph\u1ed5 bi\u1ebfn v\u00e0 quan tr\u1ecdng trong WordPress, \u0111\u01b0\u1ee3c nh\u00f3m theo th\u1eddi \u0111i\u1ec3m ch\u00fang \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t:<\/p>\n\n\n\n<p><strong>Trong qu\u00e1 tr\u00ecnh t\u1ea3i trang (Front-end):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>wp_head<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi trong ph\u1ea7n&nbsp;<code>&lt;head&gt;<\/code>&nbsp;c\u1ee7a t\u00e0i li\u1ec7u HTML. Th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u00eam c\u00e1c meta tag, styles, scripts.<\/li>\n\n\n\n<li><code>wp_footer<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay tr\u01b0\u1edbc th\u1ebb \u0111\u00f3ng&nbsp;<code>&lt;\/body&gt;<\/code>. Th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u00eam scripts ho\u1eb7c c\u00e1c \u0111o\u1ea1n m\u00e3 c\u1ea7n t\u1ea3i sau n\u1ed9i dung ch\u00ednh.<\/li>\n\n\n\n<li><code>init<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi WordPress \u0111\u00e3 kh\u1edfi t\u1ea1o xong, nh\u01b0ng tr\u01b0\u1edbc khi b\u1ea5t k\u1ef3 header n\u00e0o \u0111\u01b0\u1ee3c g\u1eedi. R\u1ea5t th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 \u0111\u0103ng k\u00fd custom post types, taxonomies, v\u00e0 c\u00e1c h\u00e0nh \u0111\u1ed9ng kh\u1edfi t\u1ea1o kh\u00e1c.<\/li>\n\n\n\n<li><code>wp_enqueue_scripts<\/code>: \u0110\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 \u0111\u0103ng k\u00fd v\u00e0 \u0111\u01b0a c\u00e1c file CSS v\u00e0 JavaScript v\u00e0o website m\u1ed9t c\u00e1ch ch\u00ednh x\u00e1c.<\/li>\n\n\n\n<li><code>template_redirect<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi tr\u01b0\u1edbc khi WordPress t\u1ea3i template. Th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u1ef1c hi\u1ec7n c\u00e1c chuy\u1ec3n h\u01b0\u1edbng ho\u1eb7c c\u00e1c h\u00e0nh \u0111\u1ed9ng d\u1ef1a tr\u00ean URL hi\u1ec7n t\u1ea1i.<\/li>\n\n\n\n<li><code>wp<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi \u0111\u1ed1i t\u01b0\u1ee3ng&nbsp;<code>$wp<\/code>&nbsp;\u0111\u00e3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp v\u00e0 truy v\u1ea5n ch\u00ednh \u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n.<\/li>\n\n\n\n<li><code>get_header<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay tr\u01b0\u1edbc khi file header.php \u0111\u01b0\u1ee3c t\u1ea3i.<\/li>\n\n\n\n<li><code>get_footer<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay tr\u01b0\u1edbc khi file footer.php \u0111\u01b0\u1ee3c t\u1ea3i.<\/li>\n\n\n\n<li><code>loop_start<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay tr\u01b0\u1edbc khi v\u00f2ng l\u1eb7p b\u00e0i vi\u1ebft b\u1eaft \u0111\u1ea7u.<\/li>\n\n\n\n<li><code>loop_end<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay sau khi v\u00f2ng l\u1eb7p b\u00e0i vi\u1ebft k\u1ebft th\u00fac.<\/li>\n\n\n\n<li><code>the_post<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi trong m\u1ed7i l\u1ea7n l\u1eb7p c\u1ee7a v\u00f2ng l\u1eb7p b\u00e0i vi\u1ebft, ngay tr\u01b0\u1edbc khi d\u1eef li\u1ec7u c\u1ee7a b\u00e0i vi\u1ebft hi\u1ec7n t\u1ea1i \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp.<\/li>\n<\/ul>\n\n\n\n<p><strong>Trong trang qu\u1ea3n tr\u1ecb (Admin):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>admin_init<\/code>: T\u01b0\u01a1ng t\u1ef1 nh\u01b0&nbsp;<code>init<\/code>&nbsp;nh\u01b0ng ch\u1ec9 d\u00e0nh cho trang qu\u1ea3n tr\u1ecb.<\/li>\n\n\n\n<li><code>admin_menu<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi \u0111\u1ec3 x\u00e2y d\u1ef1ng menu qu\u1ea3n tr\u1ecb. S\u1eed d\u1ee5ng hook n\u00e0y \u0111\u1ec3 th\u00eam c\u00e1c m\u1ee5c menu t\u00f9y ch\u1ec9nh.<\/li>\n\n\n\n<li><code>admin_enqueue_scripts<\/code>: T\u01b0\u01a1ng t\u1ef1 nh\u01b0&nbsp;<code>wp_enqueue_scripts<\/code>&nbsp;nh\u01b0ng ch\u1ec9 d\u00e0nh cho trang qu\u1ea3n tr\u1ecb.<\/li>\n\n\n\n<li><code>admin_head<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi trong ph\u1ea7n&nbsp;<code>&lt;head&gt;<\/code>&nbsp;c\u1ee7a c\u00e1c trang qu\u1ea3n tr\u1ecb.<\/li>\n\n\n\n<li><code>admin_footer<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi trong ph\u1ea7n&nbsp;<code>&lt;footer&gt;<\/code>&nbsp;c\u1ee7a c\u00e1c trang qu\u1ea3n tr\u1ecb.<\/li>\n\n\n\n<li><code>admin_notices<\/code>: \u0110\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 hi\u1ec3n th\u1ecb c\u00e1c th\u00f4ng b\u00e1o qu\u1ea3n tr\u1ecb.<\/li>\n\n\n\n<li><code>wp_dashboard_setup<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi thi\u1ebft l\u1eadp c\u00e1c widget tr\u00ean trang Dashboard.<\/li>\n<\/ul>\n\n\n\n<p><strong>Li\u00ean quan \u0111\u1ebfn b\u00e0i vi\u1ebft v\u00e0 trang:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>save_post<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi m\u1ed9t b\u00e0i vi\u1ebft ho\u1eb7c trang \u0111\u01b0\u1ee3c l\u01b0u (t\u1ea1o m\u1edbi ho\u1eb7c c\u1eadp nh\u1eadt).<\/li>\n\n\n\n<li><code>publish_post<\/code>,&nbsp;<code>publish_page<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi m\u1ed9t b\u00e0i vi\u1ebft ho\u1eb7c trang \u0111\u01b0\u1ee3c chuy\u1ec3n sang tr\u1ea1ng th\u00e1i \u0111\u00e3 xu\u1ea5t b\u1ea3n. Thay th\u1ebf&nbsp;<code>{$new_status}_{$post_type}<\/code>&nbsp;(v\u00ed d\u1ee5:&nbsp;<code>publish_post<\/code>).<\/li>\n\n\n\n<li><code>trash_post<\/code>,&nbsp;<code>untrash_post<\/code>,&nbsp;<code>delete_post<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi m\u1ed9t b\u00e0i vi\u1ebft ho\u1eb7c trang b\u1ecb x\u00f3a v\u00e0o th\u00f9ng r\u00e1c, kh\u00f4i ph\u1ee5c ho\u1eb7c x\u00f3a v\u0129nh vi\u1ec5n.<\/li>\n\n\n\n<li><code>add_meta_boxes<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi \u0111\u1ec3 th\u00eam c\u00e1c meta box t\u00f9y ch\u1ec9nh v\u00e0o trang ch\u1ec9nh s\u1eeda b\u00e0i vi\u1ebft\/trang.<\/li>\n\n\n\n<li><code>do_meta_boxes<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi \u0111\u1ec3 hi\u1ec3n th\u1ecb c\u00e1c meta box.<\/li>\n<\/ul>\n\n\n\n<p><strong>Li\u00ean quan \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>user_register<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi m\u1ed9t ng\u01b0\u1eddi d\u00f9ng m\u1edbi \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.<\/li>\n\n\n\n<li><code>wp_login<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi m\u1ed9t ng\u01b0\u1eddi d\u00f9ng \u0111\u0103ng nh\u1eadp th\u00e0nh c\u00f4ng.<\/li>\n\n\n\n<li><code>delete_user<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi ngay tr\u01b0\u1edbc khi m\u1ed9t ng\u01b0\u1eddi d\u00f9ng b\u1ecb x\u00f3a.<\/li>\n\n\n\n<li><code>profile_update<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt.<\/li>\n<\/ul>\n\n\n\n<p><strong>Li\u00ean quan \u0111\u1ebfn plugin v\u00e0 theme:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>plugins_loaded<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi t\u1ea5t c\u1ea3 c\u00e1c plugin \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea3i.<\/li>\n\n\n\n<li><code>after_setup_theme<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi theme hi\u1ec7n t\u1ea1i \u0111\u00e3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp. Th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u00eam h\u1ed7 tr\u1ee3 cho c\u00e1c t\u00ednh n\u0103ng c\u1ee7a theme (v\u00ed d\u1ee5:&nbsp;<code>add_theme_support()<\/code>).<\/li>\n\n\n\n<li><code>widgets_init<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi \u0111\u1ec3 \u0111\u0103ng k\u00fd c\u00e1c widget t\u00f9y ch\u1ec9nh.<\/li>\n\n\n\n<li><code>upgrader_process_complete<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi sau khi qu\u00e1 tr\u00ecnh n\u00e2ng c\u1ea5p (core, theme, plugin) ho\u00e0n t\u1ea5t.<\/li>\n\n\n\n<li><code>activated_plugin<\/code>,&nbsp;<code>deactivated_plugin<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi m\u1ed9t plugin \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t ho\u1eb7c h\u1ee7y k\u00edch ho\u1ea1t.<\/li>\n<\/ul>\n\n\n\n<p><strong>C\u00e1c hook kh\u00e1c:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>init<\/code>: (\u0110\u00e3 \u0111\u1ec1 c\u1eadp \u1edf tr\u00ean) R\u1ea5t quan tr\u1ecdng cho nhi\u1ec1u t\u00e1c v\u1ee5.<\/li>\n\n\n\n<li><code>rest_api_init<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi khi REST API c\u1ee7a WordPress \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o. S\u1eed d\u1ee5ng \u0111\u1ec3 \u0111\u0103ng k\u00fd c\u00e1c endpoint t\u00f9y ch\u1ec9nh.<\/li>\n\n\n\n<li><code>shutdown<\/code>: \u0110\u01b0\u1ee3c g\u1ecdi \u1edf cu\u1ed1i qu\u00e1 tr\u00ecnh th\u1ef1c thi script.<\/li>\n<\/ul>\n\n\n\n<p>\u0110\u00e2y ch\u1ec9 l\u00e0 m\u1ed9t s\u1ed1 Action Hook ph\u1ed5 bi\u1ebfn. WordPress c\u00f3 r\u1ea5t nhi\u1ec1u hook kh\u00e1c, cho ph\u00e9p b\u1ea1n can thi\u1ec7p v\u00e0o h\u1ea7u h\u1ebft m\u1ecdi kh\u00eda c\u1ea1nh c\u1ee7a h\u1ec7 th\u1ed1ng. \u0110\u1ec3 bi\u1ebft danh s\u00e1ch \u0111\u1ea7y \u0111\u1ee7 v\u00e0 chi ti\u1ebft, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a WordPress Developer.<\/p>\n\n\n\n<p>B\u1ea1n c\u00f3 mu\u1ed1n t\u00ecm hi\u1ec3u s\u00e2u h\u01a1n v\u1ec1 m\u1ed9t hook c\u1ee5 th\u1ec3 n\u00e0o kh\u00f4ng? Ho\u1eb7c b\u1ea1n c\u00f3 m\u1ee5c ti\u00eau c\u1ee5 th\u1ec3 n\u00e0o m\u00e0 b\u1ea1n mu\u1ed1n \u0111\u1ea1t \u0111\u01b0\u1ee3c b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Action Hook kh\u00f4ng? H\u00e3y cho t\u00f4i bi\u1ebft \u0111\u1ec3 t\u00f4i c\u00f3 th\u1ec3 h\u1ed7 tr\u1ee3 b\u1ea1n t\u1ed1t h\u01a1n!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Action Hook trong WordPress l\u00e0 c\u00e1c \u0111i\u1ec3m trong qu\u00e1 tr\u00ecnh x\u1eed l\u00fd m\u00e3 ngu\u1ed3n m\u00e0 t\u1ea1i \u0111\u00f3 b\u1ea1n c\u00f3 th\u1ec3 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":9614,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[241],"tags":[],"class_list":["post-9816","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hooks"],"views":661,"_links":{"self":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/comments?post=9816"}],"version-history":[{"count":3,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9816\/revisions"}],"predecessor-version":[{"id":9820,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9816\/revisions\/9820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media\/9614"}],"wp:attachment":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media?parent=9816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/categories?post=9816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/tags?post=9816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}