VOOZH about

URL: https://developer.wordpress.org/reference/functions/_doing_it_wrong/

⇱ _doing_it_wrong() – Function | Developer.WordPress.org


Skip to content

WordPress Developer Resources

_doing_it_wrong()

HomeReferenceFunctions_doing_it_wrong()

_doing_it_wrong( string $function_name, string $message, string $version )

Marks something as being incorrectly called.

Description

There is a ‘doing_it_wrong_run’ hook that will be called that can be used to get the backtrace up to what file and function called the deprecated function.

The current behavior is to trigger a user error if WP_DEBUG is true.

Parameters

$function_namestringrequired
The function that was called.
$messagestringrequired
A message explaining what has been done incorrectly.
$versionstringrequired
The version of WordPress where the message was added.

Source

function _doing_it_wrong( $function_name, $message, $version ) {

	/**
	 * Fires when the given function is being used incorrectly.
	 *
	 * @since 3.1.0
	 *
	 * @param string $function_name The function that was called.
	 * @param string $message A message explaining what has been done incorrectly.
	 * @param string $version The version of WordPress where the message was added.
	 */
	do_action( 'doing_it_wrong_run', $function_name, $message, $version );

	/**
	 * Filters whether to trigger an error for _doing_it_wrong() calls.
	 *
	 * @since 3.1.0
	 * @since 5.1.0 Added the `$function_name`, `$message`, and `$version` parameters.
	 *
	 * @param bool $trigger Whether to trigger the error for _doing_it_wrong() calls. Default true.
	 * @param string $function_name The function that was called.
	 * @param string $message A message explaining what has been done incorrectly.
	 * @param string $version The version of WordPress where the message was added.
	 */
	if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true, $function_name, $message, $version ) ) {
		if ( function_exists( '__' ) ) {
			if ( $version ) {
				/* translators: %s: Version number. */
				$version = sprintf( __( '(This message was added in version %s.)' ), $version );
			}

			$message .= ' ' . sprintf(
				/* translators: %s: Documentation URL. */
				__( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
				__( 'https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/' )
			);

			$message = sprintf(
				/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message, 3: WordPress version number. */
				__( 'Function %1$s was called <strong>incorrectly</strong>. %2$s %3$s' ),
				$function_name,
				$message,
				$version
			);
		} else {
			if ( $version ) {
				$version = sprintf( '(This message was added in version %s.)', $version );
			}

			$message .= sprintf(
				' Please see <a href="%s">Debugging in WordPress</a> for more information.',
				'https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/'
			);

			$message = sprintf(
				'Function %1$s was called <strong>incorrectly</strong>. %2$s %3$s',
				$function_name,
				$message,
				$version
			);
		}

		wp_trigger_error( '', $message );
	}
}

View all references View on Trac View on GitHub

Hooks

do_action( ‘doing_it_wrong_run’, , ,  )

Fires when the given function is being used incorrectly.

apply_filters( ‘doing_it_wrong_trigger_error’, , , ,  )

Filters whether to trigger an error for _doing_it_wrong() calls.

Related

UsesDescription
wp_trigger_error()wp-includes/functions.php

Generates a user-level error/warning/notice/deprecation message.

__()wp-includes/l10n.php

Retrieves the translation of $text.

do_action()wp-includes/plugin.php

Calls the callback functions that have been added to an action hook.

apply_filters()wp-includes/plugin.php

Calls the callback functions that have been added to a filter hook.

Show 2 moreShow less
Used byDescription
_wp_connectors_is_ai_api_key_valid()wp-includes/connectors.php

Checks whether an API key is valid for a given provider.

_wp_connectors_resolve_ai_provider_logo_url()wp-includes/connectors.php

Resolves an AI provider logo file path to a URL.

WP_Icons_Registry::register()wp-includes/class-wp-icons-registry.php

Registers an icon.

WP_Icons_Registry::__construct()wp-includes/class-wp-icons-registry.php

Constructor.

WP_Connector_Registry::unregister()wp-includes/class-wp-connector-registry.php

Unregisters a connector.

WP_Connector_Registry::register()wp-includes/class-wp-connector-registry.php

Registers a new connector.

WP_Connector_Registry::get_registered()wp-includes/class-wp-connector-registry.php

Retrieves a registered connector.

WP_Connector_Registry::set_instance()wp-includes/class-wp-connector-registry.php

Sets the main instance of the registry class.

WP_AI_Client_Prompt_Builder::__construct()wp-includes/ai-client/class-wp-ai-client-prompt-builder.php

Constructor.

WP_AI_Client_Prompt_Builder::using_abilities()wp-includes/ai-client/class-wp-ai-client-prompt-builder.php

Registers WordPress abilities as function declarations for the AI model.

WP_Interactivity_API::_process_directives()wp-includes/interactivity-api/class-wp-interactivity-api.php

Processes the interactivity directives contained within the HTML content and updates the markup accordingly.

WP_Interactivity_API::get_context()wp-includes/interactivity-api/class-wp-interactivity-api.php

Returns the latest value on the context stack with the passed namespace.

WP_Interactivity_API::get_element()wp-includes/interactivity-api/class-wp-interactivity-api.php

Returns an array representation of the current element being processed.

WP_Script_Modules::sort_item_dependencies()wp-includes/class-wp-script-modules.php

Recursively sorts the dependencies for a single script module identifier.

WP_Script_Modules::set_fetchpriority()wp-includes/class-wp-script-modules.php

Sets the fetch priority for a script module.

wp_register_ability_category()wp-includes/abilities-api.php

Registers a new ability category.

wp_register_ability()wp-includes/abilities-api.php

Registers a new ability using the Abilities API. It requires three steps:

WP_HTML_Processor::create_full_parser()wp-includes/html-api/class-wp-html-processor.php

Creates an HTML processor in the full parsing mode.

WP_HTML_Processor::create_fragment_at_current_node()wp-includes/html-api/class-wp-html-processor.php

Creates a fragment processor at the current node.

WP_Abilities_Registry::register()wp-includes/abilities-api/class-wp-abilities-registry.php

Registers a new ability.

WP_Abilities_Registry::unregister()wp-includes/abilities-api/class-wp-abilities-registry.php

Unregisters an ability.

WP_Abilities_Registry::get_registered()wp-includes/abilities-api/class-wp-abilities-registry.php

Retrieves a registered ability.

WP_Abilities_Registry::get_instance()wp-includes/abilities-api/class-wp-abilities-registry.php

Utility method to retrieve the main instance of the registry class.

WP_Ability_Categories_Registry::get_instance()wp-includes/abilities-api/class-wp-ability-categories-registry.php

Utility method to retrieve the main instance of the registry class.

WP_Ability_Categories_Registry::register()wp-includes/abilities-api/class-wp-ability-categories-registry.php

Registers a new ability category.

WP_Ability_Categories_Registry::unregister()wp-includes/abilities-api/class-wp-ability-categories-registry.php

Unregisters an ability category.

WP_Ability_Categories_Registry::get_registered()wp-includes/abilities-api/class-wp-ability-categories-registry.php

Retrieves a registered ability category.

WP_Ability::execute()wp-includes/abilities-api/class-wp-ability.php

Executes the ability after input validation and running a permission check.

WP_Ability_Category::__construct()wp-includes/abilities-api/class-wp-ability-category.php

Constructor.

WP_Ability::__construct()wp-includes/abilities-api/class-wp-ability.php

Constructor.

WP_Speculation_Rules::add_rule()wp-includes/class-wp-speculation-rules.php

Adds a speculation rule to the speculation rules to consider.

WP_Block_Metadata_Registry::get_collection_block_metadata_files()wp-includes/class-wp-block-metadata-registry.php

Gets the list of absolute paths to all block metadata files that are part of the given collection.

wp_unique_id_from_values()wp-includes/functions.php

Generates a unique ID based on the structure and values of a given array.

WP_URL_Pattern_Prefixer::prefix_path_pattern()wp-includes/class-wp-url-pattern-prefixer.php

Prefixes the given URL path pattern with the base path for the given context.

WP_Block_Metadata_Registry::register_collection()wp-includes/class-wp-block-metadata-registry.php

Registers a block metadata collection.

WP_Block_Templates_Registry::unregister()wp-includes/class-wp-block-templates-registry.php

Unregisters a template.

WP_Block_Templates_Registry::register()wp-includes/class-wp-block-templates-registry.php

Registers a template.

WP_Token_Map::from_precomputed_table()wp-includes/class-wp-token-map.php

Creates a token map from a pre-computed table.

WP_Token_Map::from_array()wp-includes/class-wp-token-map.php

Create a token map using an associative array of key/value pairs as the input.

WP_Block_Bindings_Registry::unregister()wp-includes/class-wp-block-bindings-registry.php

Unregisters a block bindings source.

WP_Block_Bindings_Registry::register()wp-includes/class-wp-block-bindings-registry.php

Registers a new block bindings source.

WP_Font_Library::unregister_font_collection()wp-includes/fonts/class-wp-font-library.php

Unregisters a previously registered font collection.

WP_Font_Library::register_font_collection()wp-includes/fonts/class-wp-font-library.php

Register a new font collection.

WP_Font_Collection::load_from_json()wp-includes/fonts/class-wp-font-collection.php

Loads font collection data from a JSON file or URL.

WP_Font_Collection::sanitize_and_validate_data()wp-includes/fonts/class-wp-font-collection.php

Sanitizes and validates the font collection data.

WP_Font_Collection::__construct()wp-includes/fonts/class-wp-font-collection.php

WP_Font_Collection constructor.

WP_Interactivity_API_Directives_Processor::skip_to_tag_closer()wp-includes/interactivity-api/class-wp-interactivity-api-directives-processor.php

Skips processing the content between tags.

WP_Interactivity_API::data_wp_bind_processor()wp-includes/interactivity-api/class-wp-interactivity-api.php

Processes the data-wp-bind directive.

WP_Interactivity_API::evaluate()wp-includes/interactivity-api/class-wp-interactivity-api.php

Evaluates the reference path passed to a directive based on the current store namespace, state and context.

WP_Interactivity_API::state()wp-includes/interactivity-api/class-wp-interactivity-api.php

Gets and/or sets the initial state of an Interactivity API store for a given namespace.

WP_Script_Modules::get_import_map()wp-includes/class-wp-script-modules.php

Returns the import map array.

WP_Script_Modules::register()wp-includes/class-wp-script-modules.php

Registers the script module if no script module with that script module identifier has already been registered.

WP_Script_Modules::enqueue()wp-includes/class-wp-script-modules.php

Marks the script module to be enqueued in the page.

wp_get_admin_notice()wp-includes/functions.php

Creates and returns the markup for an admin notice.

WP_Font_Face::validate_font_face_declarations()wp-includes/fonts/class-wp-font-face.php

Validates each font-face declaration (property and value pairing).

wp_remove_surrounding_empty_script_tags()wp-includes/script-loader.php

Removes leading and trailing _empty_ script tags.

WP_HTML_Processor::set_bookmark()wp-includes/html-api/class-wp-html-processor.php

Sets a bookmark in the HTML document.

WP_HTML_Processor::next_tag()wp-includes/html-api/class-wp-html-processor.php

Finds the next tag matching the $query.

WP_HTML_Processor::create_fragment()wp-includes/html-api/class-wp-html-processor.php

Creates an HTML processor in the fragment parsing mode.

WP_HTML_Processor::__construct()wp-includes/html-api/class-wp-html-processor.php

Constructor.

WP_Theme::get_block_patterns()wp-includes/class-wp-theme.php

Gets block pattern data for a specified theme.

WP_Theme::set_pattern_cache()wp-includes/class-wp-theme.php

Sets block pattern cache.

_validate_cache_id()wp-includes/functions.php

Checks whether the given cache ID is either an integer or an integer-like string.

wp_get_loading_optimization_attributes()wp-includes/media.php

Gets loading optimization attributes.

wp_img_tag_add_loading_optimization_attrs()wp-includes/media.php

Adds optimization attributes to an img HTML tag.

WP_Duotone::enqueue_global_styles_preset()wp-includes/class-wp-duotone.php

Enqueue preset assets for the page.

WP_Duotone::get_filter_svg()wp-includes/class-wp-duotone.php

Gets the SVG for the duotone filter definition.

WP_Scripts::add_data()wp-includes/class-wp-scripts.php

This overrides the add_data method from WP_Dependencies, to support normalizing of $args.

WP_HTML_Tag_Processor::set_attribute()wp-includes/html-api/class-wp-html-tag-processor.php

Updates or creates a new attribute on the currently matched tag with the passed value.

WP_HTML_Tag_Processor::seek()wp-includes/html-api/class-wp-html-tag-processor.php

Move the internal cursor in the Tag Processor to a given bookmark’s location.

WP_HTML_Tag_Processor::set_bookmark()wp-includes/html-api/class-wp-html-tag-processor.php

Sets a bookmark in the HTML document.

WP_HTML_Tag_Processor::__construct()wp-includes/html-api/class-wp-html-tag-processor.php

Constructor.

WP_Automatic_Updater::is_allowed_dir()wp-admin/includes/class-wp-automatic-updater.php

Checks whether access to a given directory is allowed.

WP_Block_Type::__set()wp-includes/class-wp-block-type.php

Proxies setting values for deprecated properties for script and style handles for backward compatibility.

wp_cache_flush_group()wp-includes/cache.php

Removes all cache items in a group, if the object cache implementation supports it.

WP_Style_Engine_Processor::add_store()wp-includes/style-engine/class-wp-style-engine-processor.php

Adds a store to the processor.

WP_Object_Cache::is_valid_key()wp-includes/class-wp-object-cache.php

Serves as a utility function to determine whether a key is valid.

WP_List_Table::get_views_links()wp-admin/includes/class-wp-list-table.php

Generates views links.

_register_theme_block_patterns()wp-includes/block-patterns.php

Register any patterns that the active theme may provide under its ./patterns/ directory.

wp_maybe_update_user_counts()wp-includes/user.php

Updates the total count of users on the site if live user counting is enabled.

wp_update_user_counts()wp-includes/user.php

Updates the total count of users on the site.

wp_is_large_user_count()wp-includes/user.php

Determines whether the site has a large number of users.

wp_is_block_theme()wp-includes/theme.php

Returns whether the active theme is a block-based theme or not.

wp_check_widget_editor_deps()wp-includes/widgets.php

Displays a _doing_it_wrong() message for conflicting widget editor scripts.

wp_maybe_inline_styles()wp-includes/script-loader.php

Allows small styles to be inlined.

WP_Theme_JSON::get_property_value()wp-includes/class-wp-theme-json.php

Returns the style property for the given path.

wp_migrate_old_typography_shape()wp-includes/blocks.php

Converts typography keys declared under supports.* to supports.typography.*.

wp_get_inline_script_tag()wp-includes/script-loader.php

Constructs an inline script tag.

WP_Block_Patterns_Registry::unregister()wp-includes/class-wp-block-patterns-registry.php

Unregisters a block pattern.

WP_Block_Patterns_Registry::register()wp-includes/class-wp-block-patterns-registry.php

Registers a block pattern.

WP_Block_Pattern_Categories_Registry::register()wp-includes/class-wp-block-pattern-categories-registry.php

Registers a pattern category.

WP_Block_Pattern_Categories_Registry::unregister()wp-includes/class-wp-block-pattern-categories-registry.php

Unregisters a pattern category.

rest_handle_multi_type_schema()wp-includes/rest-api.php

Handles getting the best type for a multi-type schema.

rest_stabilize_value()wp-includes/rest-api.php

Stabilizes a value following JSON Schema semantics.

register_block_type_from_metadata()wp-includes/blocks.php

Registers a block type from the metadata stored in the block.json file.

WP_Sitemaps_Renderer::get_sitemap_index_xml()wp-includes/sitemaps/class-wp-sitemaps-renderer.php

Gets XML for a sitemap index.

WP_Sitemaps_Renderer::get_sitemap_xml()wp-includes/sitemaps/class-wp-sitemaps-renderer.php

Gets XML for a sitemap.

is_favicon()wp-includes/query.php

Is the query for the favicon.ico file?

WP_Block_Styles_Registry::register()wp-includes/class-wp-block-styles-registry.php

Registers a block style for the given block type.

WP_Block_Styles_Registry::unregister()wp-includes/class-wp-block-styles-registry.php

Unregisters a block style of the given block type.

is_privacy_policy()wp-includes/query.php

Determines whether the query is for the Privacy Policy page.

wp_ajax_health_check_get_sizes()wp-admin/includes/ajax-actions.php

Handles site health check to get directories and database sizes via AJAX.

wp_ajax_health_check_dotorg_communication()wp-admin/includes/ajax-actions.php

Handles site health checks on server communication via AJAX.

wp_ajax_health_check_background_updates()wp-admin/includes/ajax-actions.php

Handles site health checks on background updates via AJAX.

wp_ajax_health_check_loopback_requests()wp-admin/includes/ajax-actions.php

Handles site health checks on loopback requests via AJAX.

wp_check_site_meta_support_prefilter()wp-includes/ms-site.php

Aborts calls to site meta if it is not supported.

WP_REST_Search_Controller::__construct()wp-includes/rest-api/endpoints/class-wp-rest-search-controller.php

Constructor.

WP_Block_Type_Registry::register()wp-includes/class-wp-block-type-registry.php

Registers a block type.

WP_Block_Type_Registry::unregister()wp-includes/class-wp-block-type-registry.php

Unregisters a block type.

wp_user_personal_data_exporter()wp-includes/user.php

Finds and exports personal data associated with an email address from the user and user_meta table.

wp_privacy_generate_personal_data_export_file()wp-admin/includes/privacy-tools.php

Generate the personal data export file.

wp_add_privacy_policy_content()wp-admin/includes/plugin.php

Declares a helper function for adding content to the Privacy Policy Guide.

wp_is_uuid()wp-includes/functions.php

Validates that a UUID is valid.

rest_sanitize_value_from_schema()wp-includes/rest-api.php

Sanitize a value based on a schema.

rest_validate_value_from_schema()wp-includes/rest-api.php

Validate a value based on a schema.

WP_List_Util::pluck()wp-includes/class-wp-list-util.php

Plucks a certain field out of each element in the input array.

WP_REST_Posts_Controller::get_item_schema()wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

Retrieves the post’s schema, conforming to JSON Schema.

WP_REST_Controller::register_routes()wp-includes/rest-api/endpoints/class-wp-rest-controller.php

Registers the routes for the objects of the controller.

_load_textdomain_just_in_time()wp-includes/l10n.php

Loads plugin and theme text domains just-in-time.

wp_add_inline_script()wp-includes/functions.wp-scripts.php

Adds extra code to a registered script.

WP_Customize_Partial::render()wp-includes/customize/class-wp-customize-partial.php

Renders the template partial involving the associated settings.

register_rest_route()wp-includes/rest-api.php

Registers a REST API route.

is_embed()wp-includes/query.php

Is the query for an embedded post?

WP_Date_Query::validate_date_values()wp-includes/class-wp-date-query.php

Validates the given date_query values and triggers errors if something is not valid.

WP_Customize_Manager::remove_panel()wp-includes/class-wp-customize-manager.php

Removes a customize panel.

register_setting()wp-includes/option.php

Registers a setting and its data.

add_menu_page()wp-admin/includes/plugin.php

Adds a top-level menu page.

add_submenu_page()wp-admin/includes/plugin.php

Adds a submenu page.

convert_to_screen()wp-admin/includes/template.php

Converts a screen string to a screen object.

map_meta_cap()wp-includes/capabilities.php

Maps a capability to the primitive capabilities required of the given user to satisfy the capability being checked.

add_theme_support()wp-includes/theme.php

Registers theme support for a given feature.

check_admin_referer()wp-includes/pluggable.php

Ensures intent by verifying that a user was referred from another admin page with the correct security nonce.

check_ajax_referer()wp-includes/pluggable.php

Verifies the Ajax request to prevent processing requests external of the blog.

is_preview()wp-includes/query.php

Determines whether the query is for a post or page preview.

is_robots()wp-includes/query.php

Is the query for the robots.txt file?

is_search()wp-includes/query.php

Determines whether the query is for a search.

is_single()wp-includes/query.php

Determines whether the query is for an existing single post.

is_singular()wp-includes/query.php

Determines whether the query is for an existing single post of any post type (post, attachment, page, custom post types).

is_time()wp-includes/query.php

Determines whether the query is for a specific time.

is_trackback()wp-includes/query.php

Determines whether the query is for a trackback endpoint call.

is_year()wp-includes/query.php

Determines whether the query is for an existing year archive.

is_404()wp-includes/query.php

Determines whether the query has resulted in a 404 (returns no results).

is_main_query()wp-includes/query.php

Determines whether the query is the main query.

is_attachment()wp-includes/query.php

Determines whether the query is for an existing attachment page.

is_author()wp-includes/query.php

Determines whether the query is for an existing author archive page.

is_category()wp-includes/query.php

Determines whether the query is for an existing category archive page.

is_tag()wp-includes/query.php

Determines whether the query is for an existing tag archive page.

is_tax()wp-includes/query.php

Determines whether the query is for an existing custom taxonomy archive page.

is_date()wp-includes/query.php

Determines whether the query is for an existing date archive.

is_day()wp-includes/query.php

Determines whether the query is for an existing day archive.

is_feed()wp-includes/query.php

Determines whether the query is for a feed.

is_comment_feed()wp-includes/query.php

Is the query for a comments feed?

is_front_page()wp-includes/query.php

Determines whether the query is for the front page of the site.

is_home()wp-includes/query.php

Determines whether the query is for the blog homepage.

is_month()wp-includes/query.php

Determines whether the query is for an existing month archive.

is_page()wp-includes/query.php

Determines whether the query is for an existing single page.

is_paged()wp-includes/query.php

Determines whether the query is for a paged result and not for the first page.

is_archive()wp-includes/query.php

Determines whether the query is for an existing archive page.

is_post_type_archive()wp-includes/query.php

Determines whether the query is for an existing post type archive page.

wp_deregister_script()wp-includes/functions.wp-scripts.php

Removes a registered script.

wp_send_json()wp-includes/functions.php

Sends a JSON response back to an Ajax request.

register_taxonomy()wp-includes/taxonomy.php

Creates or modifies a taxonomy object.

WP_Admin_Bar::add_node()wp-includes/class-wp-admin-bar.php

Adds a node to the menu.

wp_add_inline_style()wp-includes/functions.wp-styles.php

Adds extra CSS styles to a registered stylesheet.

do_shortcode_tag()wp-includes/shortcodes.php

Regular Expression callable for do_shortcode() for calling shortcode hook.

add_shortcode()wp-includes/shortcodes.php

Adds a new shortcode.

register_uninstall_hook()wp-includes/plugin.php

Sets the uninstallation hook for a plugin.

WP_Dependencies::all_deps()wp-includes/class-wp-dependencies.php

Determines dependencies.

WP_User_Query::query()wp-includes/class-wp-user-query.php

Executes the query, with the current variables.

wp_insert_post()wp-includes/post.php

Inserts or updates a post in the database.

wp_delete_post()wp-includes/post.php

Trashes or deletes a post or page.

register_post_type()wp-includes/post.php

Registers a post type.

get_user_count()wp-includes/user.php

Returns the number of active users in your installation.

WP_Scripts::localize()wp-includes/class-wp-scripts.php

Localizes a script, only if the script has already been added.

register_nav_menus()wp-includes/nav-menu.php

Registers navigation menu locations for a theme.

wpdb::_real_escape()wp-includes/class-wpdb.php

Real escape using mysqli_real_escape_string().

wpdb::prepare()wp-includes/class-wpdb.php

Prepares a SQL query for safe execution.

the_widget()wp-includes/widgets.php

Outputs an arbitrary widget as a template tag.

register_sidebar()wp-includes/widgets.php

Builds the definition for a single sidebar and returns the ID.

register_meta()wp-includes/meta.php

Registers a meta key.

Show 175 moreShow less

Changelog

VersionDescription
5.4.0This function is no longer marked as "private".
3.1.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    To omit the version number from the notice, set the parameter $version to false. Useful for private or internal projects, which may lack version numbers.

You must log in before being able to contribute a note or feedback.