Title: WP_Internal_Pointers::print_js
Published: April 25, 2014
Last modified: May 20, 2026

---

# WP_Internal_Pointers::print_js( string $pointer_id, string $selector, array $args )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#wp--skip-link--target)

This function’s access is marked private. This means it is not intended for use 
by plugin or theme developers, only by core. It is listed here for completeness.

Prints the pointer JavaScript data.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#parameters)󠁿

 `$pointer_id`stringrequired

The pointer ID.

`$selector`stringrequired

The HTML elements, on which the pointer should be attached.

`$args`arrayrequired

Arguments to be passed to the pointer JS (see wp-pointer.js).

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#source)󠁿

    ```php
    private static function print_js( $pointer_id, $selector, $args ) {
    	if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) ) {
    		return;
    	}

    	?>
    	<script>
    	(function($){
    		var options = <?php echo wp_json_encode( $args, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ); ?>, setup;

    		if ( ! options )
    			return;

    		options = $.extend( options, {
    			close: function() {
    				$.post( ajaxurl, {
    					pointer: '<?php echo $pointer_id; ?>',
    					action: 'dismiss-wp-pointer'
    				});
    			}
    		});

    		setup = function() {
    			$('<?php echo $selector; ?>').first().pointer( options ).pointer('open');
    		};

    		if ( options.position && options.position.defer_loading )
    			$(window).bind( 'load.wp-pointers', setup );
    		else
    			$( function() {
    				setup();
    			} );

    	})( jQuery );
    	</script>
    	<?php
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/class-wp-internal-pointers.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-admin/includes/class-wp-internal-pointers.php#L115)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-admin/includes/class-wp-internal-pointers.php#L115-L151)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_json_encode()](https://developer.wordpress.org/reference/functions/wp_json_encode/)`wp-includes/functions.php` |

Encodes a variable into JSON, with some confidence checks.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_internal_pointers/print_js/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.3.0](https://developer.wordpress.org/reference/since/3.3.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_internal_pointers%2Fprint_js%2F)
before being able to contribute a note or feedback.