Pořadí hooků při načtení WordPress stránky

Znáte to. Potřebujete něco upravit a na Stack Overflow jste sice našli funkci, nebo popis řešení, ale kam ji sakra dát?

Dej to do functions.php – zní nejběžnější rada. Tak tam tu funkci dáte a nic se nestane. Jak to?

Je to proto, že soubor functions.php se načítá hned po načtení pluginů a může se stát, že to co chcete upravovat se definuje později.

Hooky před a po functions.php

  • setup_theme
  • include functions.php
  • after_setup_theme
  • init

Řekněme, že chceme v kódu functions.php pracovat s taxonomií WooCommerce, například product_cat.

Bohužel se nám nepodaří kód provést, protože register_taxonomies ve WooCommerce, se provádí až v init hooku, tedy po načtení functions.php. Takže v tu chvíli žádná product_cat není definovaná.

Řešením je vytvořit funkci, kterou dáme do functions.php a pomocí hooku, řekneme WordPressu, kdy chceme, aby funkci provedl.

Logicky se nabízí init, kde se registruje WooCommerce taxonomie. Pozor však dejte na to, že register_taxonomy má pozici 5, takže vy musíte mít pozici 6 a více, aby se vaše funkce provedla až když máte taxonomii definovanou.

To je odpověď na to, proč vám nemusí fungovat kód, který napíšete, nebo někde najdete.

Pořadí akcí, provedených při načtení stránky.

Při načtení každé stránky ve WordPressu, se hooky seřadí do pořadí v jakém budou prováděny. Na každé stránce se to může trochu lišit, ale základ je vždy stejný. Následující seznam ukazuje pořadí hooku WordPressu (protože do nich jsou ještě vklíněny hooky šablony a pluginů), načtených na homepage, definované jako statická stránka.

  1. mu_plugin_loaded
  2. muplugins_loaded
  3. registered_taxonomy
  4. registered_post_type
  5. plugin_loaded
  6. load_textdomain
  7. plugins_loaded
  8. wp_builder_before_plugin_init
  9. auth_cookie_malformed
  10. wp_roles_init
  11. auth_cookie_valid
  12. set_current_user
  13. wp_builder_before_initaction_scheduler_pre_init
  14. unload_textdomain
  15. update_option
  16. sanitize_comment_cookies
  17. setup_theme
  18. after_setup_theme
  19. init
  20. wp_default_styles
  21. wp_default_scripts
  22. widgets_init
  23. register_sidebar
  24. wp_register_sidebar_widget
  25. wp_sitemaps_init
  26. parse_term_query
  27. pre_get_terms
  28. redirection_first
  29. redirection_last
  30. wp_loaded
  31. parse_request
  32. send_headers
  33. parse_tax_query
  34. parse_query
  35. pre_get_posts
  36. posts_selection
  37. wp
  38. updated_option
  39. template_redirect
  40. admin_bar_init
  41. deprecated_constructor_run
  42. add_admin_bar_menus
  43. get_header
  44. wp_head
  45. wp_enqueue_scripts
  46. deprecated_function_run
  47. wp_error_added
  48. is_wp_error_instance
  49. enqueue_block_assets
  50. the_post
  51. wp_print_styles
  52. wp_print_scripts
  53. add_option
  54. added_option
  55. setted_transient
  56. wp_body_open
  57. loop_start
  58. metadata_lazyloader_queued_objects
  59. loop_end
  60. get_footer
  61. wp_footer
  62. wp_print_footer_scripts
  63. admin_bar_menu
  64. wp_before_admin_bar_render
  65. wp_after_admin_bar_render

Takže, takto vypadá sekvence načítání všech akcí při načtení WordPressu.

A aby jste měli představu, co se sekvencí udělají šablony a pluginy, na odkazu najdete sekvenci načítání, když je nainstalovaná šablona Astra, WooCommerce, Elementor a několik základních pluginů – https://musilda.cz/wp-content/wp_load_sequention_elementor.html

Doufám, že alespoň někomu tento článek pomůže pochopit, jak jsou hooky seřazeny za sebou a proč mu nefunguje úprava, kterou udělal.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

1 Comments

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *