Home / APIs / _wp_filter_build_unique_id() – Build Unique ID for storage and retrieval.

You appear to be a bot. Output may be restricted

Description

Build Unique ID for storage and retrieval.

The old way to serialize the callback caused issues and this function is the solution. It works by checking for objects and creating a new property in the class to keep track of the object and new objects of the same class that need to be added. It also allows for the removal of actions and filters for objects after they change class properties. It is possible to include the property $wp_filter_id in your class and set it to "null" or a number to bypass the workaround. However this will prevent you from adding new classes and any new classes will overwrite the previous hook by the same class. Functions and static method callbacks are just returned as strings and shouldn't have any speed penalty.

Usage

$string|false = _wp_filter_build_unique_id( $tag, $function, $priority );

Parameters

$tag
( string ) required – Used in counting how many hooks were applied
$function
( callable ) required – Used for creating unique id
$priority
( int|bool ) required – Used in counting how many hooks were applied. If === false and $function is an object reference, we return the unique id only if it already has one, false otherwise.

Returns

string|false Unique ID for usage as array key or false if $priority === false and $function is an object reference, and it does not already have a unique id.

Source

File name: wordpress/wp-includes/plugin.php
Lines: 1 to 37 of 37

function _wp_filter_build_unique_id($tag, $function, $priority) {
  global $wp_filter;
  static $filter_id_count = 0;

  if ( is_string($function) )
    return $function;

  if ( is_object($function) ) {
    // Closures are currently implemented as objects
    $function = array( $function, '' );
  } else {
    $function = (array) $function;
  }

  if (is_object($function[0]) ) {
    // Object Class Calling
    if ( function_exists('spl_object_hash') ) {
      return spl_object_hash($function[0]) . $function[1];
    } else {
      $obj_idx = get_class($function[0]).$function[1];
      if ( !isset($function[0]->wp_filter_id) ) {
        if ( false === $priority )
          return false;
        $obj_idx .= isset($wp_filter[$tag][$priority]) ? count((array)$wp_filter[$tag][$priority]) : $filter_id_count;
        $function[0]->wp_filter_id = $filter_id_count;
        ++$filter_id_count;
      } else {
        $obj_idx .= $function[0]->wp_filter_id;
      }

      return $obj_idx;
    }
  } elseif ( is_string( $function[0] ) ) {
    // Static Calling
    return $function[0] . '::' . $function[1];
  }
}
 

 View on GitHub View on Trac

Published: 10th March 2017 | Last updated: 10th March 2017

Information

Function name: _wp_filter_build_unique_id
Plugin ref: WordPress
Version: 5.0.3
Sourcefile: wp-includes/plugin.php
File ref: wp-includes/plugin.php
API type: private
Deprecated?: No
API Letters: _,B,F,U,W

  • Plugins
  • Themes
  • Shortcodes
  • APIs
  • Files
  • Hooks
  • Classes
  • Home
  • Sites
  • Sitemap
  • Blog
oik-plugins WordPress a2z
WordPress Dynamic API Reference

Site:  wp-a2z.org
© Copyright oik-plugins 2014-2019. All rights reserved.


Website designed and developed by Herb Miller
Proudly powered by WordPress and oik plugins