در وردپرس، functions.php یا توابع در وردپرس، فایلی است که در قالبهای وردپرس گنجانده شده است. این فایل مانند یک افزونه برای سایت وردپرس عمل میکند و به طور خودکار با قالب فعلی شما فعال میشود. فایل functions.php از کد PHP برای افزودن ویژگیها یا تغییر ویژگیهای پیش فرض در سایت استفاده میکند. به عنوان مثال، یک پوسته وردپرس ممکن است کمی کد به فایل functions.php اضافه کند تا یک ناحیه ویجت جدید به پاورقی اضافه کند، یا یک پیام خوشامدگویی سفارشی به داشبورد وردپرس اضافه کند. در هر صورت میتوان با کمک این فایل امکانات بیپایانی را بدون نصب افزونه اضافه کرد.
توابع در وردپرس
فایل functions.php به طور خودکار زمانی که یک قالب وردپرس را نصب و فعال میکنید بارگیری میشود. ویرایش فایل functions.php با استفاده از کدهای سفارشی به شما امکان میدهد تا انواع پست، دسته بندیها، شورت کدها و موارد دیگر را برای بهبود وبسایت خود اضافه کنید.
جایگاه فایل توابع وردپرس در کجاست؟
محل فایل functions.php در پوشه قالب است. اگر میخواهید یک قطعه کد به سایت وردپرسی اضافه کنید، اضافه کردن آن به فایل functions.php یکی از گزینهها است. اما معمولاً این بهترین راه برای انجام آن نیست. وردپرس سعی میکند تا حد امکان طراحی و عملکرد را از هم جدا کند. به همین دلیل است که ما تمهایی داریم که طراحی را تعیین میکنند و پلاگینهایی که عملکردها را تعیین میکنند.
اگر بتوانید قالب وردپرس خود را بدون تغییر در نحوه عملکرد سایت خود تغییر دهید یا افزونههای خود را بدون تأثیر بر طراحی سایت تغییر دهید، بهتر است.
آموزش وردپرس به شما میگوید قطعه کد را به فایل functions.php تم خود اضافه کنید، اما این معمولا ایده خوبی برای هر شخصی نیست. اگر تصمیم دارید فایل functions.php خود را ویرایش کنید، لطفاً بسیار احتیاط کنید یا ترجیحا از یک فرد متخصص کمک بگیرید.
در اینجا ۳ دلیل وجود دارد احتیاطی برای ویرایش فایل functions.php وجود دارد:
- ویرایش توابع در وردپرس با بهروزرسانی تم از بین میرود.
- اگر قالب وردپرس خود را تغییر دهید، ویرایشها از بین خواهند رفت.
- ایجاد خطاهای کدنویسی در فایل توابع میتواند به سایت آسیب بزند.
حتی چیزی به سادگی یک نقطه ویرگول اضافی میتواند کل سایت شما را با خطایی به نام “صفحه سفید مرگ” مواجه کند. پس اگر واقعا باید از توابع استفاده کنید حتما از افراد توسعه دهنده و حاذق کمک بگیرید.
اشتباه کدنویسی در فایل functions.php میتواند منجر به خطاهای دیگر وردپرس نیز شود. فقط در صورتی باید یک فایل functions.php را ویرایش کنید که child theme دارید و تکههای کد فقط با تم فرزند فعال استفاده میشوند. برای مثال، ممکن است بخواهید قطعههایی را برای فونتهای سفارشی، شیوه نامه، یا یک فایل ترجمه زبان بهطور خاص برای موضوعی اضافه کنید.
معرفی تمامی توابع وردپرس
فایلهای وردپرس بسیاری از توابع مفید PHP را تعریف میکنند. برخی از توابع در وردپرس، که به عنوان برچسبهای قالب شناخته میشوند، به ویژه برای استفاده در قالبهای وردپرس تعریف شدهاند. همچنین برخی از توابع مربوط به اقدامات و فیلترها (Plugin API) وجود دارند که عمدتاً برای توسعه پلاگینها مورد استفاده قرار میگیرند. بقیه برای ایجاد عملکرد اصلی وردپرس استفاده میشود.
بسیاری از توابع اصلی وردپرس برای توسعه دهندگان افزونه و قالب مفید هستند. بنابراین، در اینجا بیشتر توابع اصلی را به استثنای برچسبهای الگو فهرست میکنیم:
توابع پست:
- get_adjacent_post
- get_boundary_post
- get_children
- get_extended
- get_next_post
- get_next_posts_link
- next_posts_link
- get_permalink
- the_permalink
- get_the_excerpt
- the_excerpt
- get_the_post_thumbnail
- get_post
- get_post_field
- get_post_ancestors
- get_post_mime_type
- get_post_status
- get_post_format
- set_post_format
- get_edit_post_link
- get_delete_post_link
- get_previous_post
- get_previous_posts_link
- previous_posts_link
- get_posts
- have_posts
- is_post
- is_single
- is_sticky
- get_the_ID
- the_ID
- the_post
- wp_get_recent_posts
- wp_get_single_post
- has_post_thumbnail
- has_excerpt
- has_post_format
توابع پست سفارشی:
- register_post_status
نوع پست سفارشی:
- register_post_type
- is_post_type_archive
- post_type_archive_title
- add_post_type_support
- remove_post_type_support
- post_type_supports
- set_post_type
- post_type_exists
- get_post_type
- get_post_types
- get_post_type_archive_link
- get_post_type_object
- get_post_type_capabilities
- get_post_type_labels
- is_post_type_hierarchical
درج و حذف پست:
- wp_delete_post
- wp_insert_post
- wp_publish_post
- wp_trash_post
- wp_update_post
برگه ها:
- get_all_page_ids
- get_ancestors
- get_page
- get_page_link
- get_page_by_path
- get_page_by_title
- get_page_children
- get_page_hierarchy
- get_page_uri
- get_pages
- is_page
- page_uri_index
- wp_link_pages
- wp_list_pages
- wp_page_menu
- wp_dropdown_pages
فیلدهای سفارشی (postmeta):
- add_post_meta
- delete_post_meta
- get_post_custom
- get_post_custom_keys
- get_post_custom_values
- get_post_meta
- update_post_meta
- register_meta
پیوست ها:
- get_attached_file
- image_resize
- image_edit_before_change
- is_attachment
- is_local_attachment
- set_post_thumbnail
- update_attached_file
- wp_attachment_is_image
- wp_create_thumbnail
- wp_insert_attachment
- wp_delete_attachment
- wp_get_attachment_image
- wp_get_attachment_link
- wp_get_attachment_image_src
- wp_get_attachment_metadata
- wp_get_attachment_thumb_file
- wp_get_attachment_thumb_url
- wp_get_attachment_url
- wp_check_for_changed_slugs
- wp_count_posts
- wp_get_mime_types
- wp_mime_type_icon
- wp_generate_attachment_metadata
- wp_prepare_attachment_for_js
- wp_update_attachment_metadata
بوکمارک:
- get_bookmark
- get_bookmarks
- wp_list_bookmarks
موارد اصلی:
- wp_get_post_categories
- wp_set_post_categories
- wp_get_post_tags
- wp_set_post_tags
- wp_get_post_terms
- wp_set_post_terms
- wp_count_terms
- has_term
- is_object_in_term
سایر موارد:
- add_meta_box
- remove_meta_box
- get_the_ID
- the_ID
- get_the_author
- the_author
- get_the_author_posts
- get_the_content
- the_content
- get_the_title
- the_title
- the_title_attribute
- wp_trim_excerpt
- wp_get_post_revision
- wp_get_post_revisions
- wp_is_post_revision
- paginate_links
دسته ها:
- cat_is_ancestor_of
- get_all_category_ids
- get_ancestors
- get_cat_ID
- get_cat_name
- get_categories
- get_category
- get_category_by_path
- get_category_by_slug
- get_the_category_by_ID
- get_the_category_list
- get_category_link
- get_category_parents
- get_the_category
- single_cat_title
- in_category
- is_category
- the_category
- wp_category_checklist
- wp_dropdown_categories
- wp_list_categories
ایجاد دسته:
- wp_create_category
- wp_delete_category
- wp_insert_category
برچسبها:
- get_tag
- get_tag_link
- get_tags
- get_the_tag_list
- get_the_tags
- has_tag
- is_tag
- the_tags
- single_tag_title
- tag_description
- wp_generate_tag_cloud
- wp_tag_cloud
دسته بندی:
- get_object_taxonomies
- get_edit_term_link
- get_taxonomy
- get_taxonomies
- get_term
- get_the_term_list
- get_term_by
- the_terms
- get_the_terms
- get_term_children
- get_term_link
- get_terms
- is_taxonomy
- is_tax
- is_taxonomy_hierarchical
- is_term
- taxonomy_exists
- term_exists
- register_taxonomy
- register_taxonomy_for_object_type
- wp_get_object_terms
- wp_remove_object_terms
- wp_set_object_terms
- wp_insert_term
- wp_update_term
- wp_delete_term
- wp_terms_checklist
نقش مدیریت و سایرین:
- add_cap
- add_role
- author_can
- current_user_can
- current_user_can_for_blog
- get_role
- get_super_admins
- is_super_admin
- map_meta_cap
- remove_cap
- remove_role
- user_can
کاربران و نویسندگان:
- auth_redirect
- count_users
- count_user_posts
- count_many_users_posts
- email_exists
- get_currentuserinfo
- get_current_user_id
- get_profile
- get_user_by
- get_userdata
- get_usernumposts
- get_users
- set_current_user
- user_pass_ok
- wp_authenticate
- username_exists
- validate_username
- wp_dropdown_users
- wp_get_current_user
- wp_set_current_user
- wp_set_password
- get_author_posts_url
- get_the_modified_author
- is_multi_author
متای کاربر:
- add_user_meta
- delete_user_meta
- get_user_meta
- update_user_meta
- get_the_author_meta
عضویت و حذف کاربر:
- wp_create_user
- wp_delete_user
- wp_insert_user
- wp_update_user
ورود/ خروج:
- is_user_logged_in
- wp_login_form
- wp_signon
- wp_logout
- wp_loginout
- wp_logout_url
تابع فید:
- bloginfo_rss
- comment_author_rss
- comment_link
- comment_text_rss
- do_feed
- do_feed_atom
- do_feed_rdf
- do_feed_rss
- do_feed_rss2
- fetch_feed
- fetch_rss
- get_author_feed_link
- get_bloginfo_rss
- get_category_feed_link
- get_comment_link
- get_comment_author_rss
- get_post_comments_feed_link
- get_rss
- get_search_comments_feed_link
- get_search_feed_link
- get_the_category_rss
- get_the_title_rss
- permalink_single_rss
- post_comments_feed_link
- rss_enclosure
- the_title_rss
- the_category_rss
- the_content_rss
- the_excerpt_rss
- wp_rss
توابع HTTP API:
- wp_remote_get
- wp_remote_retrieve_body
- wp_get_http_headers
- wp_remote_fopen
توابع دیدگاهها، پینگ و ردیابی:
- add_ping
- add_comment_meta
- check_comment
- comment_text
- comment_form
- comments_number
- discover_pingback_server_uri
- delete_comment_meta
- do_all_pings
- do_enclose
- do_trackbacks
- generic_ping
- get_approved_comments
- get_avatar
- get_comment
- get_comment_text
- get_comment_meta
- get_comments
- wp_list_comments
- get_enclosed
- get_lastcommentmodified
- get_pung
- get_to_ping
- have_comments
- get_comment_author
- is_trackback
- pingback
- privacy_ping_filter
- sanitize_comment_cookies
- trackback
- trackback_url
- trackback_url_list
- update_comment_meta
- weblog_ping
- wp_allow_comment
- wp_count_comments
- wp_delete_comment
- wp_filter_comment
- wp_get_comment_status
- wp_get_current_commenter
- wp_insert_comment
- wp_new_comment
- wp_set_comment_status
- wp_throttle_comment_flood
- wp_update_comment
- wp_update_comment_count
- wp_update_comment_count_now
حقه کامنتها:
- comment_class
- comment_ID
- comment_author
- comment_date
- comment_time
- get_comment_date
- get_comment_time
صفحه بندی نظرات:
- paginate_comments_links
- previous_comments_link
- next_comments_link
- get_comment_pages_count
توابع اکشن، فیلتر و پلاگین:
فیلترها:
- has_filter
- add_filter
- apply_filters
- apply_filters_ref_array
- current_filter
- merge_filters
- remove_filter
- remove_all_filters
اکشنها:
- has_action
- add_action
- do_action
- do_action_ref_array
- did_action
- remove_action
- remove_all_actions
پلاگینها:
- plugin_basename
- plugins_url
- get_plugin_data
- get_admin_page_title
- plugin_dir_path
- register_activation_hook
- register_deactivation_hook
- menu_page_url
- is_plugin_active
- is_plugin_active_for_network
- is_plugin_inactive
- is_plugin_page
- add_contextual_help
- get_plugins
ابزارکها:
- is_active_widget
- register_widget
- the_widget
- unregister_widget
- wp_add_dashboard_widget
- wp_convert_widget_settings
- wp_get_sidebars_widgets
- wp_get_widget_defaults
- wp_register_sidebar_widget
- wp_register_widget_control
- wp_set_sidebars_widgets
- wp_unregister_sidebar_widget
- wp_unregister_widget_control
- wp_widget_description
تنظیمات:
- register_setting
- unregister_setting
- settings_fields
- do_settings_fields
- do_settings_sections
- add_settings_field
- add_settings_section
- add_settings_error
- get_settings_errors
- settings_errors
شورتکدها:
- add_shortcode
- do_shortcode
- do_shortcode_tag
- get_shortcode_regex
- remove_shortcode
- remove_all_shortcodes
- shortcode_atts
- shortcode_parse_atts
- strip_shortcodes
توابع مرتبط با قالب:
شامل توابع:
- comments_template
- get_footer
- get_header
- get_sidebar
- get_search_form
سایر توابع:
- add_custom_background
- add_custom_image_header
- add_image_size
- add_theme_support
- body_class
- current_theme_supports
- dynamic_sidebar
- get_404_template
- get_archive_template
- get_attachment_template
- get_author_template
- get_body_class
- get_category_template
- get_comments_popup_template
- get_current_theme
- get_date_template
- get_header_image
- get_header_textcolor
- get_home_template
- get_locale_stylesheet_uri
- get_page_template
- get_paged_template
- get_post_class
- get_query_template
- get_search_template
- get_single_template
- get_stylesheet
- get_stylesheet_directory
- get_stylesheet_directory_uri
- get_stylesheet_uri
- get_tag_template
- get_taxonomy_template
- get_template
- get_template_directory
- get_template_directory_uri
- get_theme_file_uri
- get_theme_file_path
- get_template_part
- get_theme
- wp_get_themes
- get_theme_data
- get_theme_support
- get_theme_mod
- get_theme_mods
- get_theme_root
- get_theme_roots
- get_theme_root_uri
- get_themes
- has_header_image
- header_image
- header_textcolor
- in_the_loop
- is_child_theme
- is_active_sidebar
- is_admin_bar_showing
- is_customize_preview
- is_dynamic_sidebar
- language_attributes
- load_template
- locale_stylesheet
- locate_template
- post_class
- preview_theme
- preview_theme_ob_filter
- preview_theme_ob_filter_callback
- register_nav_menu
- register_nav_menus
- get_registered_nav_menus
- wp_create_nav_menu
- register_sidebar
- register_sidebars
- register_theme_directory
- remove_theme_mod
- remove_theme_mods
- remove_theme_support
- require_if_theme_supports
- search_theme_directories
- set_theme_mod
- switch_theme
- validate_current_theme
- unregister_nav_menu
- unregister_sidebar
- wp_add_inline_style
- wp_clean_themes_cache
- wp_get_archives
- wp_get_nav_menu_items
- wp_get_theme
- wp_nav_menu
- wp_oembed_remove_provider
- wp_page_menu
- wp_title
توابع قالب بندی:
- absint
- add_magic_quotes
- addslashes_gpc
- antispambot
- attribute_escape
- backslashit
- balanceTags
- clean_pre
- clean_url
- convert_chars
- convert_smilies
- ent2ncr
- esc_attr
- esc_html
- esc_js
- esc_textarea
- esc_sql
- esc_url
- esc_url_raw
- force_balance_tags
- format_to_edit
- format_to_post
- funky_javascript_fix
- htmlentities2
- is_email
- js_escape
- make_clickable
- popuplinks
- remove_accents
- sanitize_email
- sanitize_file_name
- sanitize_html_class
- sanitize_key
- sanitize_mime_type
- sanitize_option
- sanitize_sql_orderby
- sanitize_text_field
- sanitize_title
- sanitize_title_for_query
- sanitize_title_with_dashes
- sanitize_user
- seems_utf8
- stripslashes_deep
- trailingslashit
- untrailingslashit
- urlencode_deep
- url_shorten
- utf8_uri_encode
- wpautop
- wptexturize
- wp_filter_kses
- wp_filter_post_kses
- wp_filter_nohtml_kses
- wp_iso_descrambler
- wp_kses
- wp_kses_array_lc
- wp_kses_attr
- wp_kses_bad_protocol
- wp_kses_bad_protocol_once
- wp_kses_bad_protocol_once2
- wp_kses_check_attr_val
- wp_kses_decode_entities
- wp_kses_hair
- wp_kses_hook
- wp_kses_html_error
- wp_kses_js_entities
- wp_kses_no_null
- wp_kses_normalize_entities
- wp_kses_normalize_entities2
- wp_kses_post
- wp_kses_split
- wp_kses_split2
- wp_kses_stripslashes
- wp_kses_version
- wp_make_link_relative
- wp_normalize_path
- wp_rel_nofollow
- wp_richedit_pre
- wp_specialchars
- wp_trim_words
- zeroise
تمامی توابعی که در بالا برایتان معرفی کردیم اصلی و ضروری هستند و شناخت آنها برای افرادی که تمایل به تغییراتی دارند، ضروریست.
توابع در وردپرس
همه قالبهای وردپرسی با یک فایل قدرتمند functions.php ارائه میشوند. این فایل به عنوان یک افزونه عمل میکند و به شما اجازه میدهد تا کارهای زیادی را در سایت وردپرس انجام دهید. تغییراتی که میتواند تحول عظیمی در سایت شما ایجاد کند!
حالا شما بگویید؛ چه تجربهای از کار کردن در فایل function.php دارید؟