{"id":1104,"date":"2024-11-15T15:20:36","date_gmt":"2024-11-15T21:20:36","guid":{"rendered":"https:\/\/pluginrx.com\/?post_type=wpe-docs&#038;p=1104"},"modified":"2026-08-14T14:43:43","modified_gmt":"2026-08-14T19:43:43","slug":"dev-debug-tools","status":"publish","type":"wpe-docs","link":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/","title":{"rendered":"Developer Debug Tools"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The Developer Debug Tools plugin has some useful functions and hooks for developers to use to further enhance its functionality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><div class=\"auto-toc-list\"><ul><li><a href=\"#ddtt_is_dev\">ddtt_is_dev()<\/a><\/li><li><a href=\"#ddtt_get_devs\">ddtt_get_devs()<\/a><\/li><li><a href=\"#ddtt_print_r\">ddtt_print_r() \/ dpr()<\/a><\/li><li><a href=\"#ddtt_var_dump_to_string\">ddtt_var_dump_to_string();<\/a><\/li><li><a href=\"#ddtt_alert\">ddtt_alert()<\/a><\/li><li><a href=\"#ddtt_console\">ddtt_console_log() \/ ddtt_console()<\/a><\/li><li><a href=\"#ddtt_write_log\">ddtt_write_log() \/ dwl()<\/a><\/li><li><a href=\"#ddtt_backtrace\">ddtt_backtrace()<\/a><\/li><li><a href=\"#ddtt_debug_form_post\">ddtt_debug_form_post()<\/a><\/li><li><a href=\"#ddtt_admin_error\">ddtt_admin_error()<\/a><\/li><li><a href=\"#ddtt_start_timer\">ddtt_start_timer()<\/a><\/li><li><a href=\"#ddtt_stop_timer\">ddtt_stop_timer()<\/a><\/li><li><a href=\"#ddtt_is_site\">ddtt_is_site()<\/a><\/li><li><a href=\"#ddtt_get_plugins_data\">ddtt_get_plugins_data()<\/a><\/li><li><a href=\"#ddtt_maybe_redact\">ddtt_maybe_redact()<\/a><\/li><li><a href=\"#ddtt_wpconfig_snippets\">ddtt_wpconfig_snippets<\/a><\/li><li><a href=\"#ddtt_htaccess_snippets\">ddtt_htaccess_snippets<\/a><\/li><li><a href=\"#ddtt_highlight_debug_log\">ddtt_highlight_debug_log<\/a><\/li><li><a href=\"#ddtt_highlight_activity_log\">ddtt_highlight_activity_log<\/a><\/li><li><a href=\"#ddtt_resource_links\">ddtt_resource_links<\/a><\/li><li><a href=\"#ddtt_recommended_plugins\">ddtt_recommended_plugins<\/a><\/li><li><a href=\"#ddtt_quick_link_icon\">ddtt_quick_link_icon<\/a><\/li><li><a href=\"#ddtt_resources_icon\">ddtt_resources_icon<\/a><\/li><li><a href=\"#ddtt_quick_link_post_types\">ddtt_quick_link_post_types<\/a><\/li><li><a href=\"#ddtt_admin_menu_special_urls\">ddtt_admin_menu_special_urls<\/a><\/li><li><a href=\"#ddtt_admin_bar_dropdown_links\">ddtt_admin_bar_dropdown_links<\/a><\/li><li><a href=\"#ddtt_admin_bar_condensed_items\">ddtt_admin_bar_condensed_items<\/a><\/li><li><a href=\"#ddtt_admin_bar_condensed_ignore\">ddtt_admin_bar_condensed_ignore<\/a><\/li><li><a href=\"#ddtt_admin_bar_condensed_only_remove_ab_labels\">ddtt_admin_bar_condensed_only_remove_ab_labels<\/a><\/li><li><a href=\"#ddtt_admin_bar_condensed_css_icon_nodes\">ddtt_admin_bar_condensed_css_icon_nodes<\/a><\/li><li><a href=\"#ddtt_omit_shortcodes\">ddtt_omit_shortcodes<\/a><\/li><li><a href=\"#ddtt_shortcode_finder_exclude_post_types\">ddtt_shortcode_finder_exclude_post_types<\/a><\/li><li><a href=\"#ddtt_shortcode_finder_content\">ddtt_shortcode_finder_content<\/a><\/li><li><a href=\"#ddtt_admin_list_update_each_user\">ddtt_admin_list_update_each_user<\/a><\/li><li><a href=\"#ddtt_admin_list_update_each_post\">ddtt_admin_list_update_each_post<\/a><\/li><li><a href=\"#ddtt_bots_to_log\">ddtt_bots_to_log<\/a><\/li><li><a href=\"#ddtt_online_users_capability\">ddtt_online_users_capability<\/a><\/li><li><a href=\"#ddtt_help_map_debug_log\">ddtt_help_map_debug_log<\/a><\/li><li><a href=\"#ddtt_time_format_choices\">ddtt_time_format_choices<\/a><\/li><li><a href=\"#ddtt_issues\">ddtt_issues<\/a><\/li><li><a href=\"#ddtt_easy_log_parse_error\">ddtt_easy_log_parse_error<\/a><\/li><li><a href=\"#ddtt_error_help_search_options\">ddtt_error_help_search_options<\/a><\/li><li><a href=\"#ddtt_metadata_ui_setting_keys\">ddtt_metadata_ui_setting_keys<\/a><\/li><li><a href=\"#ddtt_protected_meta_keys\">ddtt_protected_meta_keys<\/a><\/li><li><a href=\"#ddtt_site_option_prefixes\">ddtt_site_option_prefixes<\/a><\/li><li><a href=\"#ddtt_online_users_discord_message_args\">ddtt_online_users_discord_message_args<\/a><\/li><li><a href=\"#ddtt_fatal_discord_message_args\">ddtt_fatal_discord_message_args<\/a><\/li><li><a href=\"#ddtt_page_not_found_error_messages\">ddtt_page_not_found_error_messages<\/a><\/li><li><a href=\"#ddtt_playground_author_plugins\">ddtt_playground_author_plugins<\/a><\/li><\/ul><\/div><\/p>\n\n\n\n<h2 id=\"ddtt_is_dev\" class=\"wp-block-heading\">ddtt_is_dev()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Checks if the current user is a developer. Returns a boolean only. <strong>As of version 3.0, this function no longer accepts parameters to return a list of developers; please use <code>ddtt_get_devs()<\/code> instead (<em>see below<\/em>).<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Only do something if the current user is a developer\nif ( ddtt_is_dev() ) { ... }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Only do something if the current user is a developer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">ddtt_is_dev<\/span><span style=\"color: #D4D4D4\">() ) { ... }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_get_devs\" class=\"wp-block-heading\">ddtt_get_devs( $return_emails = false )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Returns an array of developer user IDs or developer email addresses based on the plugin settings. If no developers are configured, administrators are used as the fallback group. Introduced in version 3.0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>$return_emails<\/code><\/strong> (<em>bool<\/em>)<br>Default: <code>false<\/code><br>Set <code>true<\/code> return developer email addresses. When false, user IDs are returned.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Retrieve developer user IDs\n$dev_ids = ddtt_get_devs();\n\n\/\/ Retrieve developer email addresses\n$dev_emails = ddtt_get_devs( true );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Retrieve developer user IDs<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$dev_ids<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_get_devs<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Retrieve developer email addresses<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$dev_emails<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_get_devs<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_print_r\" class=\"wp-block-heading\">ddtt_print_r( $var, $left_margin = null, $user_id = null, $write_bool = true ) \/ dpr()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ALTERNATIVE SHORT FUNCTION:<\/strong> dpr() =&gt; ddtt_print_r()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An extended version of <code>print_r()<\/code>. Wraps it in &lt;pre&gt; tags &lt;\/pre&gt; automatically. You can use the short <code>dpr()<\/code> or long <code>ddtt_print_r()<\/code> version of the function (in some cases <code>dpr<\/code> might be used by another plugin or theme, so a long version is available).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>$var<\/code><\/strong> (<em>mixed<\/em> &#8211; required)<br>What you want to print<\/li>\n\n\n\n<li><strong><code>$left_margin<\/code><\/strong> (<em>int | string | true | null<\/em>) <br>Default: <code>null<\/code><br>Add space to the left margin of what you are printing in case it becomes hidden behind the admin menu or other elements. Set <code>true<\/code> to add 180px, which is the width of the admin menu sidebar plus some padding.<\/li>\n\n\n\n<li><strong><code>$user_id<\/code><\/strong> (<em>int | array | null<\/em>) <br>Default: <code>null<\/code><br>Display only to the specified user(s). Default is all developers.<\/li>\n\n\n\n<li><strong><code>$write_bool<\/code><\/strong> (<em>bool<\/em>) <br>Default: <code>true<\/code><br>Displays &#8220;TRUE&#8221; and &#8220;FALSE&#8221; instead of 1 and&nbsp;<em>nothing<\/em>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Print a variable that only developers can see\ndpr( $var ); \/* or *\/ ddtt_print_r( $var );\n\n\/\/ Display an array in pretty print\ndpr( $array );\n\n\/\/ Add left margin to move the printed information out from behind the admin menu sidebar\nglobal $menu;\ndpr( $menu, true ); \/* or *\/ dpr( $menu, '250px' );\n\n\/\/ Make it visible to other users (for instance if you switch to another user to test an issue they are having)\n\/\/ Whereas 3 and 7 are user ids\ndpr( $var, null, 3 ); \/* or *\/ dpr( $var, null, &#091; 3, 7 &#093; );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Print a variable that only developers can see<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_print_r<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Display an array in pretty print<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$array<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Add left margin to move the printed information out from behind the admin menu sidebar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">global<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$menu<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$menu<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$menu<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;250px&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Make it visible to other users (for instance if you switch to another user to test an issue they are having)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Whereas 3 and 7 are user ids<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">dpr<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, &#091; <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_var_dump_to_string\" class=\"wp-block-heading\">ddtt_var_dump_to_string( $var );<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Convert&nbsp;<code>var_dump()<\/code>&nbsp;to a string. Useful when logging it to the error log.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>$var<\/strong><\/code> (<em>mixed<\/em> &#8211; required) <br>What you want to dump.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Log the var_dump() to the error log\nerror_log( ddtt_var_dump_to_string( $var ) );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Log the var_dump() to the error log<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">error_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #DCDCAA\">ddtt_var_dump_to_string<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> ) );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_alert\" class=\"wp-block-heading\">ddtt_alert( $msg, $user_id = null )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add JavaScript alert in PHP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code style=\"\"><b><strong>$msg<\/strong><\/b><\/code> (<em>string<\/em> &#8211; required) <br>The message that you want to display in an alert.<\/li>\n\n\n\n<li><code><strong>$user_id<\/strong><\/code> (<em>int | null<\/em>)<br>Default: <code>null<\/code><br>Display only to the specified user. Default is all developers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Display a javascript alert with PHP\nddtt_alert( $var );\n\n\/\/ Make it visible to other users (for instance if you switch to another user to test an issue they are having)\n\/\/ Whereas 3 is the user id\nddtt_alert( $var, 3 );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Display a javascript alert with PHP<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_alert<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Make it visible to other users (for instance if you switch to another user to test an issue they are having)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Whereas 3 is the user id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_alert<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_console\" class=\"wp-block-heading\">ddtt_console_log( $msg ) \/ ddtt_console()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add JavaScript&nbsp;<code>console.log<\/code>&nbsp;in PHP. This will be visible to everyone that opens their dev console, so it really should just be used for temporary testing.  As of version 3.0, you can use the short <code>ddtt_console()<\/code> or long <code>ddtt_console_log()<\/code> version of the function.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code style=\"\"><b><strong>$msg<\/strong><\/b><\/code> (<em>string<\/em> &#8211; required) <br>The message that you want to display in the console.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Display something in the developer console\nddtt_console_log( $var ); \/* or *\/ ddtt_console( $var );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Display something in the developer console<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_console_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_console<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$var<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_write_log\" class=\"wp-block-heading\">ddtt_write_log( $log, $prefix = true, $backtrace = false, $full_stacktrace = false ) \/ dwl()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An extended version of <code>error_log()<\/code> that writes to the debug log. Automatically wraps arrays and objects in <code>print_r()<\/code> to be logged. Will only log if <code>WP_DEBUG<\/code> is set to <code>true<\/code>.  As of version 3.0, you can use the short <code>dwl()<\/code> or long <code>ddtt_write_log()<\/code> version of the function (in some cases <code><code>dwl<\/code><\/code> might be used by another plugin or theme, so a long version is available).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code style=\"\"><b><strong>$log<\/strong><\/b><\/code> (<em>mixed<\/em> &#8211; required) <br>What you want to log to the debug log.<\/li>\n\n\n\n<li><code><strong>$prefix<\/strong><\/code> (<em>string | bool<\/em>)<br>Default: <code>true<\/code><br>If&nbsp;<code>true<\/code>, adds &#8220;DDTT_LOG: &#8221; to beginning of line. You can use your own&nbsp;<code>String<\/code>&nbsp;as a prefix or&nbsp;<code>false<\/code>&nbsp;to remove.<\/li>\n\n\n\n<li><code style=\"\"><b><strong>$backtrace<\/strong><\/b><\/code> (<em>bool<\/em>) <br>Include file and line number the function is called on.<\/li>\n\n\n\n<li><code style=\"\"><b><strong>$full_stacktrace<\/strong><\/b><\/code> (<em>bool<\/em>) <br>Include the full stack trace of where the function is called.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Testing which condition is running\ndwl( 'Test Before' );  \/* or *\/  ddtt_write_log( 'Test Before' ); \/* Prints: DDTT_LOG: Test Before *\/\nif ( $item == 'example 1' ) {\n  \/\/ Do something\n  dwl( 'Passed condition 1' ); \/* Prints: DDTT_LOG: Passed condition 1 *\/\n} elseif ( $item == 'example 2' ) {\n  \/\/ Do something\n  dwl( 'Passed condition 2' ); \/* Prints: DDTT_LOG: Passed condition 2 *\/\n} else {\n  \/\/ Do something\n  dwl( 'Else condition' ); \/* Prints: DDTT_LOG: Else condition *\/\n}\n\n\/\/ Logging an array or object\ndwl( $array );\n\n\/\/ Remove or change the prefix\ndwl( $array, false ); \/* or *\/ dwl( $array, 'ME: ' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Testing which condition is running<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Test Before&#39;<\/span><span style=\"color: #D4D4D4\"> );  <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #DCDCAA\">ddtt_write_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Test Before&#39;<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* Prints: DDTT_LOG: Test Before *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #9CDCFE\">$item<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #CE9178\">&#39;example 1&#39;<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\">\/\/ Do something<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Passed condition 1&#39;<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* Prints: DDTT_LOG: Passed condition 1 *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #C586C0\">elseif<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #9CDCFE\">$item<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #CE9178\">&#39;example 2&#39;<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\">\/\/ Do something<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Passed condition 2&#39;<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* Prints: DDTT_LOG: Passed condition 2 *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\">\/\/ Do something<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Else condition&#39;<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* Prints: DDTT_LOG: Else condition *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Logging an array or object<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$array<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Remove or change the prefix<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$array<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> ); <\/span><span style=\"color: #6A9955\">\/* or *\/<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">dwl<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$array<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ME: &#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_backtrace\" class=\"wp-block-heading\">ddtt_backtrace( $ignore_class = null, $skip_frames = 0, $pretty = true )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log a comma-separated string or array of functions that have been called to get to the current point in code. Basically logs <code>wp_debug_backtrace_summary()<\/code>to&nbsp;<code>debug.log<\/code> using <code>ddtt_write_log()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code style=\"\"><b><strong>$ignore_class<\/strong><\/b><\/code> (<em>string<\/em>) <br>Default: <code>null<\/code><br>A class to ignore all function calls within \u2013 useful when you want to just give info about the callee.<\/li>\n\n\n\n<li><code><strong>$skip_frames<\/strong><\/code> (<em>int<\/em>)<br>Default: <code>0<\/code><br>A number of stack frames to skip \u2013 useful for unwinding back to the source of the issue.<\/li>\n\n\n\n<li><code style=\"\"><b><strong>$pretty<\/strong><\/b><\/code> (<em>bool<\/em>) <br>Default: <code>true<\/code><br>Whether you want a comma separated string instead of the raw array returned.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Log a simple backtrace for debugging\nddtt_backtrace();\n\n\/\/ Skip the first 2 stack frames in the trace\nddtt_backtrace( null, 2 );\n\n\/\/ Ignore a specific class in the backtrace summary\nddtt_backtrace( 'My_Plugin_Class' );\n\n\/\/ Return the backtrace in raw format instead of a pretty string\nddtt_backtrace( null, 0, false );\n\n\/\/ Combine options: ignore a class, skip 1 frame, and get raw output\nddtt_backtrace( 'WP_Hook', 1, false );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Log a simple backtrace for debugging<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_backtrace<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Skip the first 2 stack frames in the trace<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_backtrace<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Ignore a specific class in the backtrace summary<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_backtrace<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;My_Plugin_Class&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Return the backtrace in raw format instead of a pretty string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_backtrace<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Combine options: ignore a class, skip 1 frame, and get raw output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_backtrace<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;WP_Hook&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_debug_form_post\" class=\"wp-block-heading\">ddtt_debug_form_post( $email, $test_number = 1, $subject = &#8220;Test Form $_POST &#8221; )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Send a sanitized summary of all <code>$_POST<\/code> data to a specified email address for debugging purposes. Useful for inspecting form submissions during development or troubleshooting without exposing data on-screen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code style=\"\"><b><strong>$email<\/strong><\/b><\/code> (<em>string<\/em> &#8211; required) <br>The email you want to send debug email to.<\/li>\n\n\n\n<li><code><strong>$test_number<\/strong><\/code> (<em>int<\/em>)<br>Default: <code>1<\/code><br>Adds a test number to the subject so you know which test you are attempting.<\/li>\n\n\n\n<li><code style=\"\"><b><strong>$subject<\/strong><\/b><\/code> (<em>string<\/em>) <br>Default: <code>\"Test Form $_POST\"<\/code><br>Change the subject.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Send the contents of $_POST to your email\nddtt_debug_form_post( 'dev@example.com' );\n\n\/\/ Specify a test number to differentiate multiple test submissions\nddtt_debug_form_post( 'dev@example.com', 2 );\n\n\/\/ Customize the subject line of the debug email\nddtt_debug_form_post( 'dev@example.com', 1, 'Debugging Contact Form Submission #' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Send the contents of $_POST to your email<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_debug_form_post<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;dev@example.com&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Specify a test number to differentiate multiple test submissions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_debug_form_post<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;dev@example.com&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Customize the subject line of the debug email<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">ddtt_debug_form_post<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;dev@example.com&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;Debugging Contact Form Submission #&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_error\" class=\"wp-block-heading\">ddtt_admin_error( $msg, $include_pre = true, $br = true, $hide_error = false )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Display an admin-only error message on the front or back end, intended for development and debugging. Only users with the Administrator role will see the message, and you can optionally suppress it or customize its formatting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>$msg<\/strong><\/code> (<em>string <\/em>&#8211; required)<br>The message you want to display as the admin error.<\/li>\n\n\n\n<li><code><strong>$include_pre<\/strong><\/code> (<em>bool<\/em>)<br>Default: <code>true<\/code><br>Whether to prepend <code>\"ADMIN ERROR: \"<\/code> to the message.<\/li>\n\n\n\n<li><code><strong>$br<\/strong><\/code> (<em>bool<\/em>)<br>Default: <code>true<\/code><br>Whether to add a <code>&lt;br&gt;<\/code> before the error message to create spacing.<\/li>\n\n\n\n<li><code><strong>$hide_error<\/strong><\/code> (<em>bool<\/em>)<br>Default: <code>false<\/code><br>If set to <code>true<\/code>, the error will be suppressed regardless of the user\u2019s role.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Show a simple admin-only error\necho ddtt_admin_error( 'Something went wrong.' );\n\n\/\/ Suppress the \"ADMIN ERROR: \" prefix\necho ddtt_admin_error( 'Missing form field.', false );\n\n\/\/ Remove line break spacing above the error\necho ddtt_admin_error( 'Post ID not found.', true, false );\n\n\/\/ Hide the error completely (can be toggled via flag)\n$testing = false;\necho ddtt_admin_error( 'This should not appear.', true, true, $testing );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Show a simple admin-only error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_error<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Something went wrong.&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Suppress the &quot;ADMIN ERROR: &quot; prefix<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_error<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Missing form field.&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Remove line break spacing above the error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_error<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Post ID not found.&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Hide the error completely (can be toggled via flag)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$testing<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_error<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;This should not appear.&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$testing<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_start_timer\" class=\"wp-block-heading\">ddtt_start_timer( $timeout_seconds = 300 )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starts a processing timer using microseconds and (optionally) increases the cURL timeout limit. Used with <code>ddtt_stop_timer()<\/code> (see next function below) to measure how long a process takes to run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>$timeout_seconds<\/code> (<em>int<\/em>)<br>Default: <code>300<\/code><br>The number of seconds to temporarily extend the cURL timeout while timing. Set to <code>null<\/code> or <code>0<\/code> to skip timeout changes.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"ddtt_stop_timer\" class=\"wp-block-heading\">ddtt_stop_timer( $start, $timeout = true, $milliseconds = false )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stops a previously started timer (from <code>ddtt_start_timer()<\/code> above), calculates the total elapsed time, optionally restores the cURL timeout setting, and returns the result in seconds or milliseconds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>$start<\/strong><\/code> (<em>float <\/em>&#8211; required)<br>The start time returned by <code>ddtt_start_timer()<\/code>.<\/li>\n\n\n\n<li><code><strong>$timeout<\/strong><\/code> (<em>bool<\/em>)<br>Default: <code>true<\/code><br>Whether to restore the original cURL timeout setting after the timer stops.<\/li>\n\n\n\n<li><code><strong>$milliseconds<\/strong><\/code> (<em>bool<\/em>)<br>Default: <code>false<\/code><br>If <code>true<\/code>, returns the result in milliseconds instead of seconds.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Start the timer\n$start = ddtt_start_timer();\n\n\/\/ Run some code you want to measure\ndo_some_custom_processing();\n\n\/\/ Stop the timer and get elapsed time in seconds\n$total_time = ddtt_stop_timer( $start );\n\n\/\/ Display result\necho 'This process took '.$total_time.' seconds.';\n\n\/* or *\/\n\n\/\/ Start the timer\n$start = ddtt_start_timer();\n\n\/\/ Process several items\n$number_of_items = 0;\nforeach ( $some_array as $item ) {\n  run_something_heavy();\n  $number_of_items++;\n}\n\n\/\/ Stop the timer and get elapsed time in seconds\n$total_time = ddtt_stop_timer( $start );\n\n\/\/ Get the length of time it took per item\n$sec_per_item = round( ( $total_time \/ $number_of_items ), 2 );\n\n\/\/ Display result\necho 'This process took a total of ' . $total_time . ' seconds; ' . $sec_per_item . ' per item.';<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Start the timer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$start<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_start_timer<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Run some code you want to measure<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">do_some_custom_processing<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Stop the timer and get elapsed time in seconds<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$total_time<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_stop_timer<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$start<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Display result<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;This process took &#39;<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">$total_time<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #CE9178\">&#39; seconds.&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/* or *\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Start the timer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$start<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_start_timer<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Process several items<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$number_of_items<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #9CDCFE\">$some_array<\/span><span style=\"color: #D4D4D4\"> as <\/span><span style=\"color: #9CDCFE\">$item<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #DCDCAA\">run_something_heavy<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">$number_of_items<\/span><span style=\"color: #D4D4D4\">++;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Stop the timer and get elapsed time in seconds<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$total_time<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_stop_timer<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$start<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Get the length of time it took per item<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$sec_per_item<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">round<\/span><span style=\"color: #D4D4D4\">( ( <\/span><span style=\"color: #9CDCFE\">$total_time<\/span><span style=\"color: #D4D4D4\"> \/ <\/span><span style=\"color: #9CDCFE\">$number_of_items<\/span><span style=\"color: #D4D4D4\"> ), <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Display result<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">echo<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;This process took a total of &#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$total_time<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39; seconds; &#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$sec_per_item<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39; per item.&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_is_site\" class=\"wp-block-heading\">ddtt_is_site( $site_to_check )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check if the current site matches (or partially matches) a given domain string. Useful for targeting site-specific logic in multisite setups or shared codebases. Accepts partial matches (e.g. <code>\"example\"<\/code> matches <code>example.com<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>$site_to_check<\/strong><\/code> (<em>string <\/em>&#8211; required)<br>The string to compare against the current site\u2019s domain. Partial matches are allowed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Run specific logic only on example.com\nif ( ddtt_is_site( 'example.com' ) ) {\n    \/\/ Do something only for example.com\n}\n\n\/\/ Use with negation to exclude logic on a specific site (devsite.com or thedevsite.org, etc)\nif ( !ddtt_is_site( 'devsite' ) ) {\n    \/\/ Skip something on the dev site\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Run specific logic only on example.com<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">ddtt_is_site<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;example.com&#39;<\/span><span style=\"color: #D4D4D4\"> ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Do something only for example.com<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Use with negation to exclude logic on a specific site (devsite.com or thedevsite.org, etc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( !<\/span><span style=\"color: #DCDCAA\">ddtt_is_site<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;devsite&#39;<\/span><span style=\"color: #D4D4D4\"> ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Skip something on the dev site<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_get_plugins_data\" class=\"wp-block-heading\">ddtt_get_plugins_data()<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fetches data for all of your plugins and caches them to a transient named&nbsp;<code>ddtt_plugins_data<\/code>&nbsp;for 1 day. You can schedule this to run at night using&nbsp;<a href=\"https:\/\/wordpress.org\/plugins\/wp-crontrol\/\" target=\"_blank\" rel=\"noreferrer noopener\">WP Crontrol<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Hook into plugin activation to fetch plugin data\nfunction ddtt_on_plugin_activated( $plugin ) {\n    \/\/ Fetch and cache the plugin data when a plugin is activated\n    $plugins_data = ddtt_get_plugins_data();\n\n    \/\/ You can also log or send notifications based on the data, if needed\n    error_log( 'Plugins data fetched after activation of: ' . $plugin );\n}\nadd_action( 'activated_plugin', 'ddtt_on_plugin_activated' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Hook into plugin activation to fetch plugin data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_on_plugin_activated<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$plugin<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Fetch and cache the plugin data when a plugin is activated<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$plugins_data<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_get_plugins_data<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ You can also log or send notifications based on the data, if needed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">error_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Plugins data fetched after activation of: &#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$plugin<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_action<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;activated_plugin&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_on_plugin_activated&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_maybe_redact\" class=\"wp-block-heading\">ddtt_maybe_redact( $string, $abspath = false )<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redacts sensitive information when the \u201cView Sensitive Information\u201d security setting is disabled. Supports full-string redaction or conditional redaction of absolute paths. Introduced in version 3.0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PARAMETERS<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>$string<\/strong><\/code> (<em>string <\/em>&#8211; required)<br>String to potentially redact.<\/li>\n\n\n\n<li><code><strong>$abspath<\/strong><\/code> (<em>bool<\/em>)<br>Default: false<br>Set <code>true<\/code> to redact only when the string begins with the server\u2019s absolute path.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Fully redact a string if sensitive info is disabled\n$redacted = ddtt_maybe_redact( $debug_output );\n\n\/\/ Redact only the absolute path portion\n$path_redacted = ddtt_maybe_redact( $file_path, true );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Fully redact a string if sensitive info is disabled<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$redacted<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_maybe_redact<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$debug_output<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Redact only the absolute path portion<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$path_redacted<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">ddtt_maybe_redact<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$file_path<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_wpconfig_snippets\" class=\"wp-block-heading\">ddtt_wpconfig_snippets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add, remove or modify a snippet from&nbsp;the <strong>WP-CONFIG<\/strong> tab. <em><a href=\"https:\/\/developer.wordpress.org\/apis\/wp-config-php\/\" target=\"_blank\" rel=\"noreferrer noopener\">Find more snippets here.<\/a><\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add, remove or modify a snippet from the DDT WP-CONFIG tab.\n * Find more snippets here: https:\/\/developer.wordpress.org\/apis\/wp-config-php\/\n *\n * @param array $snippets\n * @return array\n *\/\nfunction ddtt_wpconfig_snippets_filter( $snippets ) {\n    \/\/ Add a new snippet\n    $snippets&#091; 'post_revisions' &#093; = [\n        'label' => 'Change Number of Post Revisions',\n        'lines' => [\n            &#091;\n                'prefix'   => 'define',\n                'variable' => 'WP_POST_REVISIONS',\n                'value'    => 3\n            &#093;\n        ],\n        'desc'  => 'Changes the number of post revisions to 3.' \n    ];\n\n    \/\/ Remove a snippet\n    unset( $snippets&#091; 'fs_method' &#093; );\n\n    \/\/ Change memory limit snippet to 512M\n    $snippets&#091; 'upload_size' &#093;&#091; 'lines' &#093; = [\n        &#091;\n            'prefix'   => '@ini_set',\n            'variable' => 'upload_max_size',\n            'value'    => '512M'\n        &#093;,\n        &#091;\n            'prefix'   => '@ini_set',\n            'variable' => 'post_max_size',\n            'value'    => '512M'\n        &#093;\n    ];\n\n    \/\/ Return the new snippet array\n    return $snippets;\n} \/\/ End ddtt_wpconfig_snippets_filter()\n\nadd_filter( 'ddtt_wpconfig_snippets', 'ddtt_wpconfig_snippets_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add, remove or modify a snippet from the DDT WP-CONFIG tab.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Find more snippets here: https:\/\/developer.wordpress.org\/apis\/wp-config-php\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $snippets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_wpconfig_snippets_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add a new snippet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;post_revisions&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;Change Number of Post Revisions&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;lines&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;prefix&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #CE9178\">&#39;define&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;variable&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;WP_POST_REVISIONS&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;value&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #B5CEA8\">3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            &#093;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;desc&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #CE9178\">&#39;Changes the number of post revisions to 3.&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Remove a snippet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">unset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;fs_method&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change memory limit snippet to 512M<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;upload_size&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;&#091; <\/span><span style=\"color: #CE9178\">&#39;lines&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;prefix&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #CE9178\">&#39;@ini_set&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;variable&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;upload_max_size&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;value&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #CE9178\">&#39;512M&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        &#093;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;prefix&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #CE9178\">&#39;@ini_set&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;variable&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;post_max_size&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;value&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #CE9178\">&#39;512M&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        &#093;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new snippet array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_wpconfig_snippets_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_wpconfig_snippets&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_wpconfig_snippets_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_htaccess_snippets\" class=\"wp-block-heading\">ddtt_htaccess_snippets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add, remove or modify a snippet from&nbsp;the <strong>HTACCESS <\/strong>tab. <em><a href=\"https:\/\/github.com\/phanan\/htaccess\" target=\"_blank\" rel=\"noreferrer noopener\">Find more snippets here.<\/a><\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add, remove or modify a snippet from the DDT HTACCESS tab.\n *\n * @param array $snippets\n * @return array\n *\/\nfunction ddtt_htaccess_snippets_filter( $snippets ) {\n    \/\/ Add a new snippet\n    $snippets&#091; 'force_trailing_slash' &#093; = [\n        'label' => 'Force Trailing Slash',\n        'lines' => [\n            'RewriteCond %{REQUEST_URI} \/+&#091;^\\.&#093;+$',\n            'RewriteRule ^(.+&#091;^\/&#093;)$ %{REQUEST_URI}\/ &#091;R=301,L&#093;',\n        ],\n        'desc'  => 'Forces a trailing slash at the end of the domain.'\n    ];\n\n    \/\/ Remove a snippet\n    unset( $snippets&#091; 'allow_backups' &#093; );\n\n    \/\/ Return the new snippet array\n    return $snippets;\n} \/\/ End ddtt_htaccess_snippets_filter()\n\nadd_filter( 'ddtt_htaccess_snippets', 'ddtt_htaccess_snippets_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add, remove or modify a snippet from the DDT HTACCESS tab.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $snippets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_htaccess_snippets_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add a new snippet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;force_trailing_slash&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;Force Trailing Slash&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;lines&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;RewriteCond %{REQUEST_URI} \/+&#091;^\\.&#093;+$&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;RewriteRule ^(.+&#091;^\/&#093;)$ %{REQUEST_URI}\/ &#091;R=301,L&#093;&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;desc&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #CE9178\">&#39;Forces a trailing slash at the end of the domain.&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Remove a snippet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">unset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;allow_backups&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new snippet array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$snippets<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_htaccess_snippets_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_htaccess_snippets&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_htaccess_snippets_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_highlight_debug_log\" class=\"wp-block-heading\">ddtt_highlight_debug_log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change highlight colors on the&nbsp;<strong>Debug Log<\/strong> tab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the highlight colors for Parse Errors in the debug log.\n *\n * @param array $args Existing debug log highlight args.\n * @return array Modified debug log highlight args.\n *\/\nfunction ddtt_custom_parse_error_highlight( $args ) {\n    $args&#091; 'parse-error' &#093;&#091; 'bg_color' &#093;   = '#FFA500';\n    $args&#091; 'parse-error' &#093;&#091; 'font_color' &#093; = '#000000';\n    return $args;\n}\nadd_filter( 'ddtt_highlight_debug_log', 'ddtt_custom_parse_error_highlight' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the highlight colors for Parse Errors in the debug log.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $args Existing debug log highlight args.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified debug log highlight args.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_custom_parse_error_highlight<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;parse-error&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;&#091; <\/span><span style=\"color: #CE9178\">&#39;bg_color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;   = <\/span><span style=\"color: #CE9178\">&#39;#FFA500&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;parse-error&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;&#091; <\/span><span style=\"color: #CE9178\">&#39;font_color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;#000000&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_highlight_debug_log&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_custom_parse_error_highlight&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_highlight_activity_log\" class=\"wp-block-heading\">ddtt_highlight_activity_log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change highlight colors on the&nbsp;<strong>Activity Log<\/strong> tab. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the highlight colors for the Settings-related activity log.\n *\n * @param array $args Existing highlight args.\n * @return array Modified highlight args.\n *\/\nfunction ddtt_custom_settings_highlight( $args ) {\n    $args&#091; 'settings' &#093;&#091; 'bg_color' &#093;   = '#FF00FF';\n    $args&#091; 'settings' &#093;&#091; 'font_color' &#093; = '#FFFFFF';\n    return $args;\n}\nadd_filter( 'ddtt_highlight_activity_log', 'ddtt_custom_settings_highlight' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the highlight colors for the Settings-related activity log.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $args Existing highlight args.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified highlight args.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_custom_settings_highlight<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;settings&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;&#091; <\/span><span style=\"color: #CE9178\">&#39;bg_color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;   = <\/span><span style=\"color: #CE9178\">&#39;#FF00FF&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;settings&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;&#091; <\/span><span style=\"color: #CE9178\">&#39;font_color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;#FFFFFF&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_highlight_activity_log&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_custom_settings_highlight&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_resource_links\" class=\"wp-block-heading\">ddtt_resource_links<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add your own link to the <strong>Resources<\/strong> tab and the Resources admin bar dropdown. <strong>As of version 3.0, you can now add resources directly from the page. This hook will remain available so that you can add conditions to them.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add your own link to Resources.\n *\n * @param array $links\n * @return array\n *\/\nfunction ddtt_resource_link_filter( $links ) {\n    \/\/ Add a new resource\n    $links[] = &#091;\n        'title' => 'Google',\n        'url'   => 'https:\/\/www.google.com',\n        'desc'  => 'This is an example description.'\n    &#093;;\n\n    \/\/ Return the new links array\n    return $links;\n} \/\/ End ddtt_resource_link_filter()\n\nadd_filter( 'ddtt_resource_links', 'ddtt_resource_link_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add your own link to Resources.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $links<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_resource_link_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add a new resource<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\">[] = &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;title&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;Google&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;url&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #CE9178\">&#39;https:\/\/www.google.com&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;desc&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #CE9178\">&#39;This is an example description.&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new links array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_resource_link_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_resource_links&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_resource_link_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_recommended_plugins\" class=\"wp-block-heading\">ddtt_recommended_plugins<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add or remove a&nbsp;recommended plugin on the <strong>Add Plugins &gt; Dev Debug Tools<\/strong> tab. <em>Note that you can only add plugins that are in the&nbsp;<a href=\"https:\/\/wordpress.org\/plugins\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress.org repository<\/a>.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add or remove a recommended plugin from the plugins page.\n * Note that you can only add plugins that are in the WordPress.org repository.\n *\n * @param array $plugin_slugs\n * @return array\n *\/\nfunction ddtt_recommended_plugins_filter( $plugin_slugs ) {\n    \/\/ Add your own recommended plugin\n    \/\/ Find the slug in the WP.org url (https:\/\/wordpress.org\/plugins\/{slug}\/)\n    \/\/ For example: https:\/\/wordpress.org\/plugins\/user-switching\/\n    $plugin_slugs[] = 'user-switching';\n\n    \/\/ Remove a recommended plugin\n    if ( ( $key = array_search( 'post-type-switcher', $plugin_slugs ) ) !== false ) {\n        unset( $plugin_slugs&#091; $key &#093; );\n    }\n\n    \/\/ Return the new links array\n    return $plugin_slugs;\n} \/\/ End ddtt_recommended_plugins_filter()\n\nadd_filter( 'ddtt_recommended_plugins', 'ddtt_recommended_plugins_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add or remove a recommended plugin from the plugins page.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Note that you can only add plugins that are in the WordPress.org repository.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $plugin_slugs<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_recommended_plugins_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$plugin_slugs<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add your own recommended plugin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Find the slug in the WP.org url (https:\/\/wordpress.org\/plugins\/{slug}\/)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ For example: https:\/\/wordpress.org\/plugins\/user-switching\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$plugin_slugs<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;user-switching&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Remove a recommended plugin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( ( <\/span><span style=\"color: #9CDCFE\">$key<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">array_search<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;post-type-switcher&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$plugin_slugs<\/span><span style=\"color: #D4D4D4\"> ) ) !== <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">unset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$plugin_slugs<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #9CDCFE\">$key<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new links array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$plugin_slugs<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_recommended_plugins_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_recommended_plugins&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_recommended_plugins_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_quick_link_icon\" class=\"wp-block-heading\">ddtt_quick_link_icon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change the Quick Debug Link icon when quick links are added to posts and users in admin lists. Default is \u26a1.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the Quick Debug Link icon when quick links are added to posts and users in admin lists.\n *\/\nadd_filter( 'ddtt_quick_link_icon', function() { \n    return '&#x1f44d;'; \n} );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the Quick Debug Link icon when quick links are added to posts and users in admin lists.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_quick_link_icon&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\">() { <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc4d&#39;<\/span><span style=\"color: #D4D4D4\">; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_resources_icon\" class=\"wp-block-heading\">ddtt_resources_icon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify the HTML used for the Resources icon in the admin bar. Default is <span class=\"ab-icon dashicons dashicons-book\"><\/span>.  Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the Resources admin bar icon.\n *\/\nadd_filter( 'ddtt_resources_icon', function() { \n    return '&lt;span class=\"ab-icon dashicons dashicons-media-text\">&lt;\/span>'; \n} );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the Resources admin bar icon.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_resources_icon&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\">() { <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;&lt;span class=&quot;ab-icon dashicons dashicons-media-text&quot;&gt;&lt;\/span&gt;&#39;<\/span><span style=\"color: #D4D4D4\">; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_quick_link_post_types\" class=\"wp-block-heading\">ddtt_quick_link_post_types<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add or remove post types that include quick links when enabled. Default is <code>post<\/code> and <code>page<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add or remove post types that include quick links when enabled\n *\n * @param array $post_types\n * @return array\n *\/\nfunction ddtt_quick_link_post_types_filter( $post_types ) {\n    \/\/ Add a single post type\n    $post_types&#091; 'listing' &#093; = 'listing';\n\n    \/\/ Add multiple post types\n    \/\/ Example adding Events Calendar plugin post types\n    $post_types = array_merge( $post_types, &#091;\n        'tribe_events'    => 'tribe_events',\n        'tribe_venue'     => 'tribe_venue',\n        'tribe_organizer' => 'tribe_organizer',\n    &#093; );\n\n    \/\/ Remove a post type\n    unset( $post_types&#091; 'post' &#093; );\n\n    \/\/ Return the post types array\n    return $post_types;\n} \/\/ End ddtt_quick_link_post_types_filter()\n\nadd_filter( 'ddtt_quick_link_post_types', 'ddtt_quick_link_post_types_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add or remove post types that include quick links when enabled<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $post_types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_quick_link_post_types_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add a single post type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;listing&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;listing&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add multiple post types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Example adding Events Calendar plugin post types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">array_merge<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">, &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;tribe_events&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #CE9178\">&#39;tribe_events&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;tribe_venue&#39;<\/span><span style=\"color: #D4D4D4\">     =&gt; <\/span><span style=\"color: #CE9178\">&#39;tribe_venue&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;tribe_organizer&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;tribe_organizer&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093; );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Remove a post type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">unset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;post&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the post types array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_quick_link_post_types_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_quick_link_post_types&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_quick_link_post_types_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_menu_special_urls\" class=\"wp-block-heading\">ddtt_admin_menu_special_urls<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify \u201cspecial\u201d admin menu URLs used in the admin bar dropdown links if some links are broken. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add or modify special admin menu URLs.\n *\n * @param array $special_urls Array of slug => URL mappings.\n * @return array\n *\/\nfunction ddtt_admin_menu_special_urls_filter( $special_urls ) {\n    $special_urls&#091; 'my-plugin' &#093; = 'edit.php?post_type=my-plugin-slug',\n    return $special_urls;\n}\nadd_filter( 'ddtt_admin_menu_special_urls', 'ddtt_admin_menu_special_urls_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add or modify special admin menu URLs.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $special_urls Array of slug =&gt; URL mappings.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_menu_special_urls_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$special_urls<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$special_urls<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;my-plugin&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;edit.php?post_type=my-plugin-slug&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$special_urls<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_menu_special_urls&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_menu_special_urls_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_bar_dropdown_links\" class=\"wp-block-heading\">ddtt_admin_bar_dropdown_links<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add a link to the admin bar site name dropdown on the front-end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a link to the admin bar site name dropdown on the front-end.\n *\n * @param array $links\n * @return array\n *\/\nfunction ddtt_admin_bar_dropdown_links_filter( $links ) {\n    \/\/ Add your own links\n    $links[] = &#091; 'Title', 'https:\/\/yourlink.com' &#093;;\n\n    \/\/ Return the new links array\n    return $links;\n} \/\/ End ddtt_admin_bar_dropdown_links_filter()\n\nadd_filter( 'ddtt_admin_bar_dropdown_links', 'ddtt_admin_bar_dropdown_links_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a link to the admin bar site name dropdown on the front-end.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $links<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_bar_dropdown_links_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add your own links<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\">[] = &#091; <\/span><span style=\"color: #CE9178\">&#39;Title&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;https:\/\/yourlink.com&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new links array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$links<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_admin_bar_dropdown_links_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_dropdown_links&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_dropdown_links_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_bar_condensed_items\" class=\"wp-block-heading\">ddtt_admin_bar_condensed_items<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify the admin bar icons that get condensed when the option is set.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Modify the admin bar icons that get condensed when the option is set.\n *\n * @param array $condensed_items The menu item id\n * @return array\n *\/\nfunction ddtt_admin_bar_condensed_items_filter( $condensed_items ) {\n    \/\/ Lookup menu item ids with global $wp_admin_bar; or with console log &lt;li id=\"wp-admin-bar-{id}\">\n\n    \/\/ Stop condensing the site name\n    unset( $condensed_items&#091; 'site-name' &#093; );\n\n    \/\/ Condense a menu item that has an icon by simply removing the name\n    $condensed_items&#091; 'customize' &#093; = '';\n\n    \/\/ Condense a menu item that doesn't have an icon by replacing it with a shorter title\n    $condensed_items&#091; 'menu-item1-id' &#093; = 'WP';\n\n    \/\/ Condense a menu item that has an icon by giving it a shorter title (add left margin for space between icon and text)\n    $condensed_items&#091; 'edit' &#093; = '&lt;span style=\"margin-left: 6px;\">Edit&lt;\/span>';\n\n    \/\/ Or change the title to a dashicon when there is no icon\n    \/\/ Lookup dashicons here: https:\/\/developer.wordpress.org\/resource\/dashicons\/\n    $condensed_items&#091; 'menu-item2-id' &#093; = '&lt;span class=\"ab-icon dashicons dashicons-carrot\" style=\"margin-top: 2px;\">&lt;\/span>';\n\n    \/\/ Always return the condensed items array\n    return $condensed_items;\n} \/\/ End ddtt_admin_bar_condensed_items_filter()\n\nadd_filter( 'ddtt_admin_bar_condensed_items', 'ddtt_admin_bar_condensed_items_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Modify the admin bar icons that get condensed when the option is set.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $condensed_items The menu item id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_bar_condensed_items_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Lookup menu item ids with global $wp_admin_bar; or with console log &lt;li id=&quot;wp-admin-bar-{id}&quot;&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Stop condensing the site name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">unset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;site-name&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Condense a menu item that has an icon by simply removing the name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;customize&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Condense a menu item that doesn&#39;t have an icon by replacing it with a shorter title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;menu-item1-id&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;WP&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Condense a menu item that has an icon by giving it a shorter title (add left margin for space between icon and text)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;edit&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;&lt;span style=&quot;margin-left: 6px;&quot;&gt;Edit&lt;\/span&gt;&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Or change the title to a dashicon when there is no icon<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Lookup dashicons here: https:\/\/developer.wordpress.org\/resource\/dashicons\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;menu-item2-id&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;&lt;span class=&quot;ab-icon dashicons dashicons-carrot&quot; style=&quot;margin-top: 2px;&quot;&gt;&lt;\/span&gt;&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Always return the condensed items array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$condensed_items<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_admin_bar_condensed_items_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_items&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_items_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_bar_condensed_ignore\" class=\"wp-block-heading\">ddtt_admin_bar_condensed_ignore<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exclude specific admin bar nodes from condensation. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Exclude specific admin bar nodes from condensation.\n *\n * @param array $ignored_nodes Array of admin bar node IDs to ignore.\n * @return array\n *\/\nfunction ddtt_admin_bar_condensed_ignore_filter( $ignored_nodes ) {\n    $ignored_nodes[] = 'your-plugin-node';\n    return $ignored_nodes;\n}\nadd_filter( 'ddtt_admin_bar_condensed_ignore', 'ddtt_admin_bar_condensed_ignore_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Exclude specific admin bar nodes from condensation.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $ignored_nodes Array of admin bar node IDs to ignore.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_bar_condensed_ignore_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$ignored_nodes<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$ignored_nodes<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;your-plugin-node&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$ignored_nodes<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_ignore&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_ignore_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_bar_condensed_only_remove_ab_labels\" class=\"wp-block-heading\">ddtt_admin_bar_condensed_only_remove_ab_labels<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Specify admin bar nodes that should remove labels but keep icons, without full condensation. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Specify admin bar nodes that should remove labels but keep icons.\n *\n * @param array $label_only_nodes Array of node IDs that should display icons only.\n * @return array\n *\/\nfunction ddtt_admin_bar_condensed_only_remove_ab_labels_filter( $label_only_nodes ) {\n    $label_only_nodes[] = 'your-plugin-node';\n    return $label_only_nodes;\n}\nadd_filter( 'ddtt_admin_bar_condensed_only_remove_ab_labels', 'ddtt_admin_bar_condensed_only_remove_ab_labels_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Specify admin bar nodes that should remove labels but keep icons.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $label_only_nodes Array of node IDs that should display icons only.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_bar_condensed_only_remove_ab_labels_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$label_only_nodes<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$label_only_nodes<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;your-plugin-node&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$label_only_nodes<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_only_remove_ab_labels&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_only_remove_ab_labels_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_bar_condensed_css_icon_nodes\" class=\"wp-block-heading\">ddtt_admin_bar_condensed_css_icon_nodes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Define admin bar nodes that should use CSS-generated icons when condensed. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Define admin bar nodes that should use CSS-generated icons when condensed.\n *\n * @param array $css_icon_nodes Array of node IDs that should receive CSS icon classes.\n * @return array\n *\/\nfunction ddtt_admin_bar_condensed_css_icon_nodes_filter( $css_icon_nodes ) {\n    $css_icon_nodes&#091; 'woocommerce' &#093; = 'ab-icon dashicons-store';\n    return $css_icon_nodes;\n}\nadd_filter( 'ddtt_admin_bar_condensed_css_icon_nodes', 'ddtt_admin_bar_condensed_css_icon_nodes_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Define admin bar nodes that should use CSS-generated icons when condensed.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $css_icon_nodes Array of node IDs that should receive CSS icon classes.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_admin_bar_condensed_css_icon_nodes_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$css_icon_nodes<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$css_icon_nodes<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;woocommerce&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;ab-icon dashicons-store&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$css_icon_nodes<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_css_icon_nodes&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_bar_condensed_css_icon_nodes_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_omit_shortcodes\" class=\"wp-block-heading\">ddtt_omit_shortcodes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Omit shortcodes from the admin bar shortcode finder.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Omit shortcodes from the admin bar shortcode finder.\n *\n * @param array $omits\n * @return array\n *\/\nfunction ddtt_omit_shortcodes_filter( $omits ) {\n    \/\/ Omit shortcodes starting with these keywords:\n    \/\/ Ex: &#091;shortcode_name param=\"\"&#093;\n    $omits[] = 'shortcode_name';\n\n    \/\/ Return the new omits array\n    return $omits;\n} \/\/ End ddtt_omit_shortcodes_filter()\n\nadd_filter( 'ddtt_omit_shortcodes', 'ddtt_omit_shortcodes_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Omit shortcodes from the admin bar shortcode finder.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $omits<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_omit_shortcodes_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$omits<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Omit shortcodes starting with these keywords:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Ex: &#091;shortcode_name param=&quot;&quot;&#093;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$omits<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;shortcode_name&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Return the new omits array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$omits<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_omit_shortcodes_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_omit_shortcodes&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_omit_shortcodes_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_shortcode_finder_exclude_post_types\" class=\"wp-block-heading\">ddtt_shortcode_finder_exclude_post_types<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filters the list of post types to exclude from the shortcode search. Default excluded post types include: <code>attachment<\/code>, <code>revision<\/code>, <code>nav_menu_item<\/code>, <code>custom_css<\/code>, <code>customize_changeset<\/code>, <code>oembed_cache<\/code>, <code>user_request<\/code>, <code>wp_block<\/code>, <code>wp_template<\/code>, <code>wp_template_part<\/code>, <code>wp_global_styles<\/code>, <code>wp_navigation<\/code>, <code>cs_template<\/code>, <code>cs_user_templates<\/code>, <code>um_form<\/code>, <code>um_directory<\/code>, <code>cs_global_block<\/code>, <code>x-portfolio<\/code>. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Exclude an additional custom post type from shortcode search.\n *\n * @param array $post_types The array of post types currently excluded.\n * @return array Modified array of post types to exclude.\n *\/\nfunction ddtt_excluded_post_types( $post_types ) {\n    $post_types[] = 'my_custom_post_type';\n    return $post_types;\n}\nadd_filter( 'ddtt_shortcode_finder_exclude_post_types', 'ddtt_excluded_post_types' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Exclude an additional custom post type from shortcode search.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $post_types The array of post types currently excluded.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array of post types to exclude.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_excluded_post_types<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;my_custom_post_type&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$post_types<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_shortcode_finder_exclude_post_types&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_excluded_post_types&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_shortcode_finder_content\" class=\"wp-block-heading\">ddtt_shortcode_finder_content<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify or provide the post content used by the Shortcode Finder admin bar display, allowing an alternative source if <code>$post-&gt;post_content<\/code> is empty. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Provide content for the Shortcode Finder if $post->post_content is empty.\n *\n * @param string $content The original post content.\n * @return string The modified or alternative post content.\n *\/\nfunction ddtt_shortcode_finder_content_filter( $content ) {\n    if ( empty( $content ) ) {\n        \/\/ Fallback: get content from a custom field\n        $post_id = get_the_ID();\n        if ( $post_id ) {\n            $alt_content = get_post_meta( $post_id, '_custom_content', true );\n            if ( ! empty( $alt_content ) ) {\n                $content = $alt_content;\n            }\n        }\n    }\n    \n    return $content;\n}\nadd_filter( 'ddtt_shortcode_finder_content', 'ddtt_shortcode_finder_content_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Provide content for the Shortcode Finder if $post-&gt;post_content is empty.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> $content The original post content.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> The modified or alternative post content.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_shortcode_finder_content_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$content<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">empty<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$content<\/span><span style=\"color: #D4D4D4\"> ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Fallback: get content from a custom field<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">get_the_ID<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">$alt_content<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">get_post_meta<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;_custom_content&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( ! <\/span><span style=\"color: #DCDCAA\">empty<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$alt_content<\/span><span style=\"color: #D4D4D4\"> ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #9CDCFE\">$content<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">$alt_content<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$content<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_shortcode_finder_content&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_shortcode_finder_content_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_list_update_each_user\" class=\"wp-block-heading\">ddtt_admin_list_update_each_user<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Action<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do something for each&nbsp;<strong>user<\/strong>&nbsp;when you load the&nbsp;<em>user<\/em>&nbsp;admin list. Must have Quick Debug Links enabled in&nbsp;Settings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why? Because sometimes we have to update meta keys for all users (sometimes in the thousands), and running a function using pagination on a smaller amount of users at a time is better for testing, processing, preventing time-outs, etc. It&#8217;s also easier to do this than to code a pagination script that you&#8217;re only going to use once.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Do something for each user when you load the user admin list. \n * Must have Quick Debug Links enabled in Settings.\n *\n * @param int $user_id\n * @return void\n *\/\nfunction ddtt_update_each_user( $user_id ) {    \n    \/\/ Only update users with subscriber role\n    if ( ddtt_has_role( 'subscriber', $user_id ) ) {\n\n        \/\/ Console log what I'm doing to each user\n        $user = get_userdata( $user_id );\n        ddtt_console_log( $user->display_name.' is a subscriber.' );\n\n        \/\/ Add\/update meta key\/value\n        update_user_meta( $user_id, 'example_meta_key', 'This is just an example' );\n    }\n} \/\/ End ddtt_update_each_user()\n\nadd_action( 'ddtt_admin_list_update_each_user', 'ddtt_update_each_user' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Do something for each user when you load the user admin list. <\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Must have Quick Debug Links enabled in Settings.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #6A9955\"> $user_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_update_each_user<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$user_id<\/span><span style=\"color: #D4D4D4\"> ) {    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Only update users with subscriber role<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">ddtt_has_role<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;subscriber&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$user_id<\/span><span style=\"color: #D4D4D4\"> ) ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Console log what I&#39;m doing to each user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">get_userdata<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$user_id<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">ddtt_console_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\">-&gt;<\/span><span style=\"color: #9CDCFE\">display_name<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #CE9178\">&#39; is a subscriber.&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Add\/update meta key\/value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">update_user_meta<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$user_id<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;example_meta_key&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;This is just an example&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_update_each_user()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_action<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_list_update_each_user&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_update_each_user&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_admin_list_update_each_post\" class=\"wp-block-heading\">ddtt_admin_list_update_each_post<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Action<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do something for each&nbsp;<strong>post<\/strong>&nbsp;or&nbsp;<strong>page<\/strong>&nbsp;when you load the&nbsp;<em>post<\/em>&nbsp;or&nbsp;<em>page<\/em>&nbsp;admin lists. Must have Quick Debug Links enabled in&nbsp;Settings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why? Because sometimes we have to update meta keys for all posts (sometimes in the thousands), and running a function using pagination on a smaller amount of posts at a time is better for testing, processing, preventing time-outs, etc. It&#8217;s also easier to do this than to code a pagination script that you&#8217;re only going to use once.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Do something for each post or page when you load the post or page admin lists. \n * Must have Quick Debug Links enabled in Settings.\n *\n * @param int $post_id\n * @return void\n *\/\nfunction ddtt_update_each_post( $post_id ) {\n    \/\/ Only update posts\n    if ( get_post_status( $post_id ) == 'publish' ) {\n\n        \/\/ Console log what I'm doing to each post\n        $title = get_the_title( $post_id );\n        ddtt_console_log( $title.' is published.' );\n\n        \/\/ Add\/update meta key\/value\n        update_post_meta( $post_id, 'example_meta_key', 'This is just an example' );\n    }\n} \/\/ End ddtt_update_each_post()\n\nadd_action( 'ddtt_admin_list_update_each_post', 'ddtt_update_each_post' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Do something for each post or page when you load the post or page admin lists. <\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Must have Quick Debug Links enabled in Settings.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #6A9955\"> $post_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_update_each_post<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Only update posts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">get_post_status<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\"> ) == <\/span><span style=\"color: #CE9178\">&#39;publish&#39;<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Console log what I&#39;m doing to each post<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">$title<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">get_the_title<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">ddtt_console_log<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$title<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #CE9178\">&#39; is published.&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/\/ Add\/update meta key\/value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #DCDCAA\">update_post_meta<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$post_id<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;example_meta_key&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;This is just an example&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_update_each_post()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_action<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_admin_list_update_each_post&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_update_each_post&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_bots_to_log\" class=\"wp-block-heading\">ddtt_bots_to_log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add, remove or modify user agents that are flagged as bots to be included in the Bots Crawling Posts and Pages option of the&nbsp;<strong>Activity Log<\/strong> tab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Current bots:&nbsp;<code>AIOHTTP<\/code>,&nbsp;<code>Apache HTTP Client<\/code>,&nbsp;<code>Apache Nutch<\/code>,&nbsp;<code>Audisto Crawler<\/code>,&nbsp;<code>AwarioSmartBot<\/code>,&nbsp;<code>Axios<\/code>,&nbsp;<code>Baidu Spider<\/code>,&nbsp;<code>Bing Bot<\/code>,&nbsp;<code>BrightEdge Crawler<\/code>,&nbsp;<code>BuiltWith<\/code>,&nbsp;<code>Buzz Stream<\/code>,&nbsp;<code>Bytespider (ByteDance)<\/code>,&nbsp;<code>CCBot (Common Crawl)<\/code>,&nbsp;<code>Chrome Lighthouse<\/code>,&nbsp;<code>Cortex Xpanse Bot (Palo Alto Networks)<\/code>,&nbsp;<code>Criteo Crawler<\/code>,&nbsp;<code>Curl<\/code>,&nbsp;<code>DataForSeoBot<\/code>,&nbsp;<code>DuckDuckBot<\/code>,&nbsp;<code>Dynatrace<\/code>,&nbsp;<code>FAST Enterprise Crawler<\/code>,&nbsp;<code>FAST-WebCrawler<\/code>,&nbsp;<code>Facebook External Hit<\/code>,&nbsp;<code>Feedbin<\/code>,&nbsp;<code>Feedly<\/code>,&nbsp;<code>GPTBot (ChatGPT)<\/code>,&nbsp;<code>GeedoBot<\/code>,&nbsp;<code>Go HTTP client<\/code>,&nbsp;<code>Google APIs<\/code>,&nbsp;<code>Google Ads Bot Mobile\"<\/code>,&nbsp;<code>Google Ads Bot<\/code>,&nbsp;<code>Google Bot<\/code>,&nbsp;<code>Google Feedfetcher<\/code>,&nbsp;<code>Google Image Bot<\/code>,&nbsp;<code>Google Inspection Tool<\/code>,&nbsp;<code>Google Media Partners<\/code>,&nbsp;<code>Google Mobile Bot<\/code>,&nbsp;<code>Google News Bot<\/code>,&nbsp;<code>Google Other<\/code>,&nbsp;<code>Google Read Aloud<\/code>,&nbsp;<code>Google Safety<\/code>,&nbsp;<code>Google Site Verifier<\/code>,&nbsp;<code>Google Store Bot<\/code>,&nbsp;<code>Google Video Bot<\/code>,&nbsp;<code>HTTrack Website Copier<\/code>,&nbsp;<code>Headless Chrome<\/code>,&nbsp;<code>HttpUnit<\/code>,&nbsp;<code>HubSpot<\/code>,&nbsp;<code>Iframely<\/code>,&nbsp;<code>Internet Archive<\/code>,&nbsp;<code>Linespider<\/code>,&nbsp;<code>Linguee Bot<\/code>,&nbsp;<code>LinkedIn Bot<\/code>,&nbsp;<code>MSN Bot<\/code>,&nbsp;<code>Majestic (MJ12Bot)<\/code>,&nbsp;<code>MetaInspector<\/code>,&nbsp;<code>Node Fetch<\/code>,&nbsp;<code>PHPCrawl<\/code>,&nbsp;<code>Page2RSS<\/code>,&nbsp;<code>Perplexity AI<\/code>,&nbsp;<code>PetalBot<\/code>,&nbsp;<code>Proximic<\/code>,&nbsp;<code>Python HTTPX<\/code>,&nbsp;<code>Python OpenGraph<\/code>,&nbsp;<code>Python Requests<\/code>,&nbsp;<code>Python Urllib<\/code>,&nbsp;<code>Turnitin<\/code>,&nbsp;<code>Uptimebot<\/code>,&nbsp;<code>Virustotal<\/code>,&nbsp;<code>WebPageTest<\/code>,&nbsp;<code>Wget<\/code>,&nbsp;<code>YaCy<\/code>,&nbsp;<code>Yahoo! Slurp<\/code>,&nbsp;<code>Yandex<\/code>,&nbsp;<code>ZGrab<\/code>,&nbsp;<code>libwww-perl<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a bot crawler to activity log \"Bots Crawling Posts and Pages\"\n *\n * @param array $bots\n * @return array\n *\/\nfunction ddtt_bots_to_log_filter( $bots ) {\n    \/\/ Key is the keyword to search for in the user agent. For example, if the user agent is\n    \/\/ Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; custombot\/2.0; +http:\/\/www.example.com\/custombot.htm) Chrome\/xxx.xx.xxx.xxx Safari\/537.36\n    \/\/ Then the key would be \"custombot\"\n    $bots&#091; 'custombot' &#093; = &#091;\n        'name' => 'Custom Bot',\n        'url'  => 'http:\/\/www.example.com\/custombot.htm'\n    &#093;;\n    return $bots;\n} \/\/ End ddtt_bots_to_log_filter()\n\nadd_filter( 'ddtt_bots_to_log', 'ddtt_bots_to_log_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a bot crawler to activity log &quot;Bots Crawling Posts and Pages&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $bots<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_bots_to_log_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$bots<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Key is the keyword to search for in the user agent. For example, if the user agent is<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; custombot\/2.0; +http:\/\/www.example.com\/custombot.htm) Chrome\/xxx.xx.xxx.xxx Safari\/537.36<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Then the key would be &quot;custombot&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$bots<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;custombot&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;name&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;Custom Bot&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;url&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #CE9178\">&#39;http:\/\/www.example.com\/custombot.htm&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093;;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$bots<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_bots_to_log_filter()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_bots_to_log&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_bots_to_log_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_online_users_capability\" class=\"wp-block-heading\">ddtt_online_users_capability<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify the capability required for a user to view the online users admin functionality. By default, the capability is <code>administrator<\/code>. Use this filter to change it to any valid WordPress capability string. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the capability required to view online users.\n *\n * @param string $capability The original capability required.\n * @return string The modified capability required.\n *\/\nfunction ddtt_online_users_capability_filter( $capability ) {\n    return 'edit_pages';\n}\nadd_filter( 'ddtt_online_users_capability', 'ddtt_online_users_capability_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the capability required to view online users.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> $capability The original capability required.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> The modified capability required.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_online_users_capability_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$capability<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;edit_pages&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_online_users_capability&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_online_users_capability_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_help_map_debug_log\" class=\"wp-block-heading\">ddtt_help_map_debug_log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify or extend the map of debug log help references. Each entry maps a regular expression pattern matching a log message to an array containing a &#8216;desc&#8217; (description) and &#8216;link&#8217; (reference URL). Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Filter the debug log help map.\n *\n * @param array $map Associative array of regex patterns to their descriptions and links.\n * @return array Modified map.\n *\/\nfunction ddtt_debug_log_map_filter( $map ) {\n    $map&#091; '\/Custom error pattern\/' &#093; = &#091;\n        'desc' => 'Description of the custom error.',\n        'link' => 'https:\/\/example.com\/docs\/custom-error',\n    &#093;;\n\n    return $map;\n}\nadd_filter( 'ddtt_help_map_debug_log', 'ddtt_debug_log_map_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Filter the debug log help map.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $map Associative array of regex patterns to their descriptions and links.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified map.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_debug_log_map_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$map<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$map<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #D16969\">&#39;\/Custom error pattern\/&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;desc&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;Description of the custom error.&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;link&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;https:\/\/example.com\/docs\/custom-error&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$map<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_help_map_debug_log&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_debug_log_map_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_time_format_choices\" class=\"wp-block-heading\">ddtt_time_format_choices<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows modification of the array of time format strings used in Dev Debug Tools. Each string will be converted to an example using the current timestamp and developer timezone and will be added to the choices of formats in the plugin&#8217;s general settings. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add ISO 8601 format to Dev Debug Tools time choices.\n *\n * @param array $format_strings Array of date\/time format strings.\n * @return array Modified array of format strings.\n *\/\nfunction ddtt_add_iso_time_format( $format_strings ) {\n    \/\/ Add European style: day\/month\/year with 24-hour time\n    $format_strings[] = 'd\/m\/Y H:i';\n    return $format_strings;\n}\nadd_filter( 'ddtt_time_format_choices', 'ddtt_add_iso_time_format' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add ISO 8601 format to Dev Debug Tools time choices.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $format_strings Array of date\/time format strings.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array of format strings.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_add_iso_time_format<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$format_strings<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add European style: day\/month\/year with 24-hour time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$format_strings<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;d\/m\/Y H:i&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$format_strings<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_time_format_choices&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_add_iso_time_format&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_issues\" class=\"wp-block-heading\">ddtt_issues<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows modification, addition, or removal of issues that Dev Debug Tools checks on the dashboard. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a custom issue to detect if a site does not have a privacy policy page set.\n *\n * @param array $issues Existing issues.\n * @return array Modified issues.\n *\/\nfunction ddtt_add_privacy_policy_issue( $issues ) {\n\n    $issues&#091;'missing_privacy_policy'&#093; = [\n        'label'    => __( 'Missing Privacy Policy Page', 'dev-debug-tools' ),\n        'details'  => __( 'Every WordPress site should have a privacy policy page configured to comply with privacy regulations.', 'dev-debug-tools' ),\n        'severity' => 'warning',\n        'actions'  => [\n            &#091;\n                'label' => __( 'Set Privacy Policy Page', 'dev-debug-tools' ),\n                'url'   => admin_url( 'options-privacy.php' ),\n            &#093;,\n        ],\n        'callback' => 'ddtt_missing_privacy_policy_check',\n    ];\n\n    return $issues;\n}\nadd_filter( 'ddtt_issues', 'ddtt_add_privacy_policy_issue' );\n\n\n\/**\n * Check if a privacy policy page is set.\n *\n * @return bool True if no privacy policy page exists, false otherwise.\n *\/\nfunction ddtt_missing_privacy_policy_check() {\n    return ( ! get_option( 'wp_page_for_privacy_policy' ) );\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a custom issue to detect if a site does not have a privacy policy page set.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $issues Existing issues.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified issues.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_add_privacy_policy_issue<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$issues<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$issues<\/span><span style=\"color: #D4D4D4\">&#091;<\/span><span style=\"color: #CE9178\">&#39;missing_privacy_policy&#39;<\/span><span style=\"color: #D4D4D4\">&#093; = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Missing Privacy Policy Page&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;details&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Every WordPress site should have a privacy policy page configured to comply with privacy regulations.&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;severity&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;warning&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;actions&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Set Privacy Policy Page&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;url&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #DCDCAA\">admin_url<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;options-privacy.php&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            &#093;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;callback&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;ddtt_missing_privacy_policy_check&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$issues<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_issues&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_add_privacy_policy_issue&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Check if a privacy policy page is set.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">bool<\/span><span style=\"color: #6A9955\"> True if no privacy policy page exists, false otherwise.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_missing_privacy_policy_check<\/span><span style=\"color: #D4D4D4\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> ( ! <\/span><span style=\"color: #DCDCAA\">get_option<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;wp_page_for_privacy_policy&#39;<\/span><span style=\"color: #D4D4D4\"> ) );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_easy_log_parse_error\" class=\"wp-block-heading\">ddtt_easy_log_parse_error<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows customization or replacement of parsed error data when rendering the Easy Reader error log. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Custom parsing for certain debug log errors.\n *\n * @param array|null $parsed_error The current parsed error array, or null if not yet parsed.\n * @param string     $error_line   The first line of the raw error.\n * @param string     $subsection   The log subsection (e.g., 'debug', 'error').\n *\n * @return array|null Modified parsed error array or null to fall back to default parsing.\n *\/\nfunction ddtt_easy_log_error( $parsed_error, $error_line, $subsection ) {\n\n    if ( strpos( $error_line, 'MyPluginNotice' ) !== false ) {\n\n        $parsed_error = [\n            'datetime' => date_i18n( 'Y-m-d H:i:s' ),\n            'type'     => __( 'My Plugin Notice', 'dev-debug-tools' ),\n            'message'  => $error_line,\n            'file'     => '',\n            'line'     => '',\n            'source'   => __( 'Plugin: MyPlugin', 'dev-debug-tools' ),\n            'help'     => &#091;\n                'desc' => __( 'This error comes from MyPlugin. Check your plugin settings.', 'dev-debug-tools' ),\n                'link' => 'https:\/\/example.com\/docs\/myplugin-errors',\n            &#093;,\n            'stack'    => '',\n        ];\n    }\n\n    return $parsed_error;\n}\nadd_filter( 'ddtt_easy_log_parse_error', 'ddtt_easy_log_error', 10, 3 );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Custom parsing for certain debug log errors.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\">|<\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #6A9955\"> $parsed_error The current parsed error array, or null if not yet parsed.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\">     $error_line   The first line of the raw error.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\">     $subsection   The log subsection (e.g., &#39;debug&#39;, &#39;error&#39;).<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\">|<\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #6A9955\"> Modified parsed error array or null to fall back to default parsing.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_easy_log_error<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$parsed_error<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$error_line<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$subsection<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #DCDCAA\">strpos<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$error_line<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;MyPluginNotice&#39;<\/span><span style=\"color: #D4D4D4\"> ) !== <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">$parsed_error<\/span><span style=\"color: #D4D4D4\"> = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;datetime&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #DCDCAA\">date_i18n<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Y-m-d H:i:s&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;type&#39;<\/span><span style=\"color: #D4D4D4\">     =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;My Plugin Notice&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;message&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #9CDCFE\">$error_line<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;file&#39;<\/span><span style=\"color: #D4D4D4\">     =&gt; <\/span><span style=\"color: #CE9178\">&#39;&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;line&#39;<\/span><span style=\"color: #D4D4D4\">     =&gt; <\/span><span style=\"color: #CE9178\">&#39;&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;source&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Plugin: MyPlugin&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;help&#39;<\/span><span style=\"color: #D4D4D4\">     =&gt; &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;desc&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;This error comes from MyPlugin. Check your plugin settings.&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #CE9178\">&#39;link&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #CE9178\">&#39;https:\/\/example.com\/docs\/myplugin-errors&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            &#093;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #CE9178\">&#39;stack&#39;<\/span><span style=\"color: #D4D4D4\">    =&gt; <\/span><span style=\"color: #CE9178\">&#39;&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$parsed_error<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_easy_log_parse_error&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_easy_log_error&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_error_help_search_options\" class=\"wp-block-heading\">ddtt_error_help_search_options<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows modification or addition of search options for error log messages in the Easy Reader error log. Each option should include a label and a URL with <code>{string}<\/code> as a placeholder for the error message. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a custom search option for error messages.\n *\n * @param array $options The existing array of search options.\n *\n * @return array Modified array of search options.\n *\/\nfunction ddtt_error_search_options( $options ) {\n\n    $options[] = &#091;\n        'label' => __( 'Search Stack Overflow', 'dev-debug-tools' ),\n        'url'   => 'https:\/\/stackoverflow.com\/search?q={string}',\n    &#093;;\n\n    return $options;\n}\nadd_filter( 'ddtt_error_help_search_options', 'ddtt_error_search_options' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a custom search option for error messages.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $options The existing array of search options.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array of search options.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_error_search_options<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$options<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$options<\/span><span style=\"color: #D4D4D4\">[] = &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Search Stack Overflow&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;url&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #CE9178\">&#39;https:\/\/stackoverflow.com\/search?q={string}&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$options<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_error_help_search_options&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_error_search_options&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_metadata_ui_setting_keys\" class=\"wp-block-heading\">ddtt_metadata_ui_setting_keys<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows modification of the list of UI-related setting keys that are hidden in the metadata viewer when &#8220;Hide UI Settings&#8221; is enabled in the Custom Meta section. This can include postbox states, column visibility, and screen layout preferences. Default keys include: <code>closedpostboxes_*<\/code>, <code>meta-box-order_*<\/code>, <code>*columnshidden<\/code>, <code>metaboxhidden_*<\/code>, <code>screen_layout_*<\/code>. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a custom UI setting key to hide in the metadata viewer.\n *\n * @param array $keys The existing array of UI setting keys.\n * @return array Modified array of UI setting keys.\n *\/\nfunction ddtt_metadata_ui_keys( $keys ) {\n    $keys[] = 'my_custom_ui_setting_*';\n    return $keys;\n}\nadd_filter( 'ddtt_metadata_ui_setting_keys', 'ddtt_metadata_ui_keys' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a custom UI setting key to hide in the metadata viewer.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $keys The existing array of UI setting keys.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array of UI setting keys.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_metadata_ui_keys<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;my_custom_ui_setting_*&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_metadata_ui_setting_keys&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_metadata_ui_keys&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_protected_meta_keys\" class=\"wp-block-heading\">ddtt_protected_meta_keys<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allows modification of the list of protected meta keys that cannot be edited or deleted. Disables the &#8220;Edit&#8221; button and removes the &#8220;Delete&#8221; button if in custom meta. Default keys include: <code>ID<\/code>, <code>user_registered<\/code>, <code>user_activation_key<\/code>, <code>_edit_last<\/code>, <code>_edit_lock<\/code>, <code>_wp_attached_file<\/code>, <code>_wp_attachment_metadata<\/code>. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a custom protected meta key that cannot be deleted.\n *\n * @param array $keys The existing array of protected meta keys.\n * @return array Modified array of protected meta keys.\n *\/\nfunction ddtt_protected_meta_keys( $keys ) {\n    $keys[] = '_my_custom_meta_key';\n    return $keys;\n}\nadd_filter( 'ddtt_protected_meta_keys', 'ddtt_protected_meta_keys' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a custom protected meta key that cannot be deleted.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $keys The existing array of protected meta keys.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array of protected meta keys.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_protected_meta_keys<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\">[] = <\/span><span style=\"color: #CE9178\">&#39;_my_custom_meta_key&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$keys<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_protected_meta_keys&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_protected_meta_keys&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_site_option_prefixes\" class=\"wp-block-heading\">ddtt_site_option_prefixes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filters the list of known site option prefixes mapped to their plugin or source labels. Used on the Site Options tool to define the source of the option under the Option Details column. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Add a custom plugin prefix to the site option prefixes.\n *\n * @param array $prefixes Array of current option prefixes and labels.\n * @return array Modified array including a custom plugin prefix.\n *\/\nfunction ddtt_site_option_prefixes( $prefixes ) {\n    $prefixes&#091; 'my_plugin_options_prefix_' &#093; = 'Plugin: My Custom Plugin';\n    return $prefixes;\n}\nadd_filter( 'ddtt_site_option_prefixes', 'ddtt_site_option_prefixes' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Add a custom plugin prefix to the site option prefixes.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $prefixes Array of current option prefixes and labels.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified array including a custom plugin prefix.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_site_option_prefixes<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$prefixes<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$prefixes<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;my_plugin_options_prefix_&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;Plugin: My Custom Plugin&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$prefixes<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_site_option_prefixes&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_site_option_prefixes&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_online_users_discord_message_args\" class=\"wp-block-heading\">ddtt_online_users_discord_message_args<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filters the Discord webhook message arguments before sending a user login notification. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Customize the Discord login message for online users.\n *\n * @param array   $args       The default Discord webhook message arguments.\n * @param string  $user_login The user login name.\n * @param WP_User $user       The WP_User object of the logged-in user.\n *\n * @return array Modified Discord webhook message arguments.\n *\/\nfunction ddtt_discord_login_message( $args, $user_login, $user ) {\n    \/\/ Change the title\n    $args&#091; 'title' &#093; = __( 'New Login Detected on', 'dev-debug-tools' ) . ' ' . get_bloginfo( 'name' );\n    \n    \/\/ Change embed color\n    $args&#091; 'color' &#093; = 'FF5733';\n    \n    \/\/ Add another field\n    $args&#091; 'fields' &#093;[] = &#091;\n        'name'   => __( 'User Role', 'dev-debug-tools' ),\n        'value'  => implode( ', ', $user->roles ),\n        'inline' => false,\n    &#093;;\n\n    return $args;\n}\nadd_filter( 'ddtt_online_users_discord_message_args', 'ddtt_discord_login_message', 10, 3 );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Customize the Discord login message for online users.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\">   $args       The default Discord webhook message arguments.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\">  $user_login The user login name.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #4EC9B0\">WP_User<\/span><span style=\"color: #6A9955\"> $user       The WP_User object of the logged-in user.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified Discord webhook message arguments.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_discord_login_message<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$user_login<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change the title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;title&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;New Login Detected on&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ) <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39; &#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_bloginfo<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;name&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change embed color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;FF5733&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add another field<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;fields&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;[] = &#091;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;name&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;User Role&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;value&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #DCDCAA\">implode<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;, &#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$user<\/span><span style=\"color: #D4D4D4\">-&gt;<\/span><span style=\"color: #9CDCFE\">roles<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;inline&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_online_users_discord_message_args&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_discord_login_message&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_fatal_discord_message_args\" class=\"wp-block-heading\">ddtt_fatal_discord_message_args<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filters the Discord webhook message arguments before sending a fatal error or parse error notification. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Customize the Discord fatal error message.\n *\n * @param array $args  The default Discord webhook message arguments.\n * @param array $error The PHP error array from error_get_last().\n * @return array Modified Discord webhook message arguments.\n *\/\nfunction ddtt_customize_fatal_discord_message( $args, $error ) {\n    \/\/ Change the title\n    $args&#091; 'title' &#093; = __( 'Critical Error Detected on', 'dev-debug-tools' ) . ' ' . get_bloginfo( 'name' );\n\n    \/\/ Change embed color\n    $args&#091; 'color' &#093; = '990000';\n\n    \/\/ Add a custom field with the error type in more detail\n    $args&#091; 'fields' &#093;[] = [\n        'name'   => __( 'Error Severity', 'dev-debug-tools' ),\n        'value'  => isset( $error&#091; 'type' &#093; ) &amp;&amp; absint( $error&#091; 'type' &#093; ) === E_PARSE ? 'Parse Error' : 'Fatal Error',\n        'inline' => false,\n    ];\n\n    return $args;\n}\nadd_filter( 'ddtt_fatal_discord_message_args', 'ddtt_customize_fatal_discord_message', 10, 2 );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Customize the Discord fatal error message.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $args  The default Discord webhook message arguments.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $error The PHP error array from error_get_last().<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> Modified Discord webhook message arguments.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_customize_fatal_discord_message<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">$error<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change the title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;title&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Critical Error Detected on&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ) <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39; &#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">get_bloginfo<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;name&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change embed color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;color&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;990000&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Add a custom field with the error type in more detail<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;fields&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;[] = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;name&#39;<\/span><span style=\"color: #D4D4D4\">   =&gt; <\/span><span style=\"color: #DCDCAA\">__<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;Error Severity&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dev-debug-tools&#39;<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;value&#39;<\/span><span style=\"color: #D4D4D4\">  =&gt; <\/span><span style=\"color: #DCDCAA\">isset<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$error<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;type&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; ) &amp;&amp; <\/span><span style=\"color: #DCDCAA\">absint<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$error<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;type&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; ) === E_PARSE ? <\/span><span style=\"color: #CE9178\">&#39;Parse Error&#39;<\/span><span style=\"color: #D4D4D4\"> : <\/span><span style=\"color: #CE9178\">&#39;Fatal Error&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&#39;inline&#39;<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$args<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_fatal_discord_message_args&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_customize_fatal_discord_message&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_page_not_found_error_messages\" class=\"wp-block-heading\">ddtt_page_not_found_error_messages<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify or extend the array of whimsical \u201cpage not found\u201d messages used on the plugin 404 pages. By default, the messages use cartoon character-style humor to indicate the requested page does not exist. This filter allows you to add, remove, or replace messages. Introduced in version 3.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Change the capability required to view online users.\n *\n * @param string $capability The original capability required.\n * @return string The modified capability required.\n *\/\nfunction ddtt_online_users_capability_filter( $capability ) {\n    return 'edit_pages';\n}\nadd_filter( 'ddtt_online_users_capability', 'ddtt_online_users_capability_filter' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Change the capability required to view online users.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> $capability The original capability required.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #6A9955\"> The modified capability required.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_online_users_capability_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$capability<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;edit_pages&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_online_users_capability&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_online_users_capability_filter&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 id=\"ddtt_playground_author_plugins\" class=\"wp-block-heading\">ddtt_playground_author_plugins<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TYPE \u21e2<\/strong>&nbsp;Filter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modify the &#8220;Add All PluginRx Plugins&#8221; button on the WordPress Playground link generator (Testing tool sidebar). Change the label, target a different WordPress.org author, supply a manual list of slugs, or remove the button entirely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example Usage<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">PHP<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/**\n * Modify the \"Add All PluginRx Plugins\" button on the WordPress Playground link generator.\n *\n * @param array $config\n * @return array\n *\/\nfunction ddtt_playground_author_plugins_button( $config ) {\n    \/\/ Change the label and target a different WordPress.org author\n    $config&#091; 'label' &#093;  = 'Add All Acme Plugins';\n    $config&#091; 'author' &#093; = 'acmecorp';\n\n    \/\/ Or bypass WordPress.org entirely with a manual slug list\n    \/\/ $config&#091; 'label' &#093;  = 'Add All Custom Plugins';\n    \/\/ $config&#091; 'slugs' &#093; = &#091; 'my-plugin-one', 'my-plugin-two' &#093;;\n\n    \/\/ Or remove the button entirely\n    \/\/ $config&#091; 'enabled' &#093; = false;\n\n    \/\/ Always return the config array\n    return $config;\n} \/\/ End ddtt_playground_author_plugins_filter()\nadd_filter( 'ddtt_playground_author_plugins', 'ddtt_playground_author_plugins_button' );<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * Modify the &quot;Add All PluginRx Plugins&quot; button on the WordPress Playground link generator.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@param<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #6A9955\"> $config<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> * <\/span><span style=\"color: #569CD6\">@return<\/span><span style=\"color: #6A9955\"> <\/span><span style=\"color: #569CD6\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"> *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ddtt_playground_author_plugins_button<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #9CDCFE\">$config<\/span><span style=\"color: #D4D4D4\"> ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Change the label and target a different WordPress.org author<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$config<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\"> &#093;  = <\/span><span style=\"color: #CE9178\">&#39;Add All Acme Plugins&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">$config<\/span><span style=\"color: #D4D4D4\">&#091; <\/span><span style=\"color: #CE9178\">&#39;author&#39;<\/span><span style=\"color: #D4D4D4\"> &#093; = <\/span><span style=\"color: #CE9178\">&#39;acmecorp&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Or bypass WordPress.org entirely with a manual slug list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ $config&#091; &#39;label&#39; &#093;  = &#39;Add All Custom Plugins&#39;;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ $config&#091; &#39;slugs&#39; &#093; = &#091; &#39;my-plugin-one&#39;, &#39;my-plugin-two&#39; &#093;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Or remove the button entirely<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ $config&#091; &#39;enabled&#39; &#093; = false;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\">\/\/ Always return the config array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$config<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">} <\/span><span style=\"color: #6A9955\">\/\/ End ddtt_playground_author_plugins_filter()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">add_filter<\/span><span style=\"color: #D4D4D4\">( <\/span><span style=\"color: #CE9178\">&#39;ddtt_playground_author_plugins&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ddtt_playground_author_plugins_button&#39;<\/span><span style=\"color: #D4D4D4\"> );<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Developer Debug Tools plugin has some useful functions and hooks for developers to use to further enhance its functionality. ddtt_is_dev() TYPE \u21e2&nbsp;Function Checks if the current user is a developer. Returns a boolean only. As of version 3.0, this function no longer accepts parameters to return a list of developers; please use ddtt_get_devs() instead [&hellip;]<\/p>\n","protected":false},"parent":1102,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"class_list":["post-1104","wpe-docs","type-wpe-docs","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Developer Debug Tools - PluginRx<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developer Debug Tools - PluginRx\" \/>\n<meta property=\"og:description\" content=\"The Developer Debug Tools plugin has some useful functions and hooks for developers to use to further enhance its functionality. ddtt_is_dev() TYPE \u21e2&nbsp;Function Checks if the current user is a developer. Returns a boolean only. As of version 3.0, this function no longer accepts parameters to return a list of developers; please use ddtt_get_devs() instead [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"PluginRx\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pluginrx\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-14T19:43:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pluginrx.com\/wp-content\/uploads\/2025\/06\/Logo-Large.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1549\" \/>\n\t<meta property=\"og:image:height\" content=\"498\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"48 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/dev-debug-tools\\\/\",\"url\":\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/dev-debug-tools\\\/\",\"name\":\"Developer Debug Tools - PluginRx\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#website\"},\"datePublished\":\"2024-11-15T21:20:36+00:00\",\"dateModified\":\"2026-08-14T19:43:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/dev-debug-tools\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/dev-debug-tools\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/dev-debug-tools\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pluginrx.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Plugins\",\"item\":\"https:\\\/\\\/pluginrx.com\\\/docs\\\/plugin\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Developer Debug Tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#website\",\"url\":\"https:\\\/\\\/pluginrx.com\\\/\",\"name\":\"PluginRx\",\"description\":\"Where Glitches Get Stitches\",\"publisher\":{\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pluginrx.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#organization\",\"name\":\"PluginRx\",\"url\":\"https:\\\/\\\/pluginrx.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/pluginrx.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Logo-Large.png\",\"contentUrl\":\"https:\\\/\\\/pluginrx.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Logo-Large.png\",\"width\":1549,\"height\":498,\"caption\":\"PluginRx\"},\"image\":{\"@id\":\"https:\\\/\\\/pluginrx.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pluginrx\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Developer Debug Tools - PluginRx","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/","og_locale":"en_US","og_type":"article","og_title":"Developer Debug Tools - PluginRx","og_description":"The Developer Debug Tools plugin has some useful functions and hooks for developers to use to further enhance its functionality. ddtt_is_dev() TYPE \u21e2&nbsp;Function Checks if the current user is a developer. Returns a boolean only. As of version 3.0, this function no longer accepts parameters to return a list of developers; please use ddtt_get_devs() instead [&hellip;]","og_url":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/","og_site_name":"PluginRx","article_publisher":"https:\/\/www.facebook.com\/pluginrx","article_modified_time":"2026-08-14T19:43:43+00:00","og_image":[{"width":1549,"height":498,"url":"https:\/\/pluginrx.com\/wp-content\/uploads\/2025\/06\/Logo-Large.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"48 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/","url":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/","name":"Developer Debug Tools - PluginRx","isPartOf":{"@id":"https:\/\/pluginrx.com\/#website"},"datePublished":"2024-11-15T21:20:36+00:00","dateModified":"2026-08-14T19:43:43+00:00","breadcrumb":{"@id":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/pluginrx.com\/docs\/plugin\/dev-debug-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pluginrx.com\/"},{"@type":"ListItem","position":2,"name":"Plugins","item":"https:\/\/pluginrx.com\/docs\/plugin\/"},{"@type":"ListItem","position":3,"name":"Developer Debug Tools"}]},{"@type":"WebSite","@id":"https:\/\/pluginrx.com\/#website","url":"https:\/\/pluginrx.com\/","name":"PluginRx","description":"Where Glitches Get Stitches","publisher":{"@id":"https:\/\/pluginrx.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pluginrx.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/pluginrx.com\/#organization","name":"PluginRx","url":"https:\/\/pluginrx.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pluginrx.com\/#\/schema\/logo\/image\/","url":"https:\/\/pluginrx.com\/wp-content\/uploads\/2025\/06\/Logo-Large.png","contentUrl":"https:\/\/pluginrx.com\/wp-content\/uploads\/2025\/06\/Logo-Large.png","width":1549,"height":498,"caption":"PluginRx"},"image":{"@id":"https:\/\/pluginrx.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pluginrx"]}]}},"_links":{"self":[{"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/wpe-docs\/1104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/wpe-docs"}],"about":[{"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/types\/wpe-docs"}],"replies":[{"embeddable":true,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/comments?post=1104"}],"version-history":[{"count":12,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/wpe-docs\/1104\/revisions"}],"predecessor-version":[{"id":3390,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/wpe-docs\/1104\/revisions\/3390"}],"up":[{"embeddable":true,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/wpe-docs\/1102"}],"wp:attachment":[{"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/media?parent=1104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/categories?post=1104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pluginrx.com\/wp-json\/wp\/v2\/tags?post=1104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}