Title: Display Line Numbers snippet
Last modified: December 14, 2022

---

# Display Line Numbers snippet

 *  Resolved [GermanKiwi](https://wordpress.org/support/users/germankiwi/)
 * (@germankiwi)
 * [3 years, 4 months ago](https://wordpress.org/support/topic/display-line-numbers-snippet/)
 * Hi [@bungeshea](https://wordpress.org/support/users/bungeshea/),
 * A year ago, another user shared a super-useful snippet here which made it easy
   to display a certain line number from all existing snippets:
    [https://wordpress.org/support/topic/guessing-which-snippet-caused-an-error/](https://wordpress.org/support/topic/guessing-which-snippet-caused-an-error/)
 * I also added my own modified version of this snippet in the last comment on that
   page.
 * This snippet worked really well for me and I used it successfully many times.
 * However, I’ve just found that it doesn’t work anymore, and instead it throws 
   a fatal error when I click the “Show” button on the “Display Line Numbers” sub-
   page:
 * `Fatal error: Uncaught Error: Call to undefined function get_snippets() in /path/
   to/my/site/public_html/wp-content/plugins/code-snippets-pro/php/snippet-ops.php(
   511) : eval()'d code:12 Stack trace: #0 /path/to/my/site/public_html/wp-includes/
   class-wp-hook.php(308): show_snippets_Nth_line('') #1 /path/to/my/site/public_html/
   wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters('', Array) #2 /path/
   to/my/site/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)#
   3 /path/to/my/site/public_html/wp-admin/admin.php(259): do_action('snippets_page_s...')#
   4 {main} thrown in /path/to/my/site/public_html/wp-content/plugins/code-snippets-
   pro/php/snippet-ops.php(511) : eval()'d code on line 12`
 * So as far as I can make out from this, the problem is with the “undefined function”
   of `get_snippets()`
 * However, what I don’t understand is why this snippet has worked fine until recently.
   Did something change in the plugin itself? Maybe with the introduction of Code
   Snippets Pro? Why is it now saying that `get_snippets()` is undefined?
 * I hope you can help shed some light on this for me!

Viewing 7 replies - 1 through 7 (of 7 total)

 *  Plugin Author [Shea Bunge](https://wordpress.org/support/users/bungeshea/)
 * (@bungeshea)
 * [3 years, 4 months ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16294711)
 * Hi [@germankiwi](https://wordpress.org/support/users/germankiwi/),
 * Thanks for bringing this to my attention – I don’t remember seeing the original
   post at all.
 * It looks like the introduction of namespaces in Code Snippets v3 is what caused
   this snippet to stop working. Here’s an updated version:
 *     ```
       namespace Code_Snippets;
   
       $render_callback = function () {
       	// Default to 2 (where I put the code description)
       	$line_number = $_POST['line_number'] ?? 2;
       	$lines = '';
   
       	/*
       	* Show the results (when 'Show' button is pressed)
       	*/
       	if ( isset( $_POST['show'] ) ) {
       		$all_snippets = get_snippets();
   
       		foreach ( $all_snippets as $snippet ) {
       			if ( $snippet->active ) {
       				$lines .= sprintf(
       					'<hr><p><a href="%s" target="blank">%s</a></p>%s',
       					esc_url( code_snippets()->get_snippet_edit_url( $snippet->id ) ),
       					esc_html( $snippet->display_name ),
       					PHP_EOL
       				);
   
       				$code = explode( PHP_EOL, $snippet->code );
   
       				if ( (int) $line_number <= count( $code ) ) {
       					$lines .= '<pre><code>' . esc_html( trim( $code[ $line_number - 1 ] ) ) . '</code></pre>' . PHP_EOL;
       				}
       			}
       		}
       	}
   
       	/*
       	* Set the line number to show
       	*/
       	echo '
       <div class="wrap">
       	<h1>' . esc_html( get_admin_page_title() ) . '</h1>
       	<p>This will display the contents of a given line number for all of your active snippets. You can use this to help identify which snippet is causing a particular PHP error on your website.</p>
       	<p>For example, if you receive a PHP error similar to this, which mentions the <strong>snippet-ops.php</strong> file, it means one of your snippets is causing the error:</p>
       	<p><code>Undefined variable: xyz in /wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()\'d code on line N</code></p>
       	<p>Then you can enter the line number from the error message into the field below, and look through the results to find which snippet contains the text that matches the cause of the error (eg. "xyz" in the above example).</p>
       	<hr>
       	<form method="post" action="">
       		<p>Line number to show: <input type="text" name="line_number" value="' . esc_attr( $line_number ) . '">&nbsp;
       		<input type="submit" name="show" value="Show"></p>
       	</form>
       	<h2>Results:</h2>
       	' . $lines . '
       </div>';
       };
   
       add_action( 'admin_menu', function () use ( $render_callback ) {
       	add_submenu_page(
       		'snippets',
       		'Display Snippet Line Numbers',
       		'Display Line Numbers',
       		code_snippets()->get_cap(),
       		'snippet-line-number',
       		$render_callback
       	);
       }, 99 );
       ```
   
 *  Thread Starter [GermanKiwi](https://wordpress.org/support/users/germankiwi/)
 * (@germankiwi)
 * [3 years, 4 months ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16294738)
 * Hi [@bungeshea](https://wordpress.org/support/users/bungeshea/),
 * Thanks so much for the quick reply and for providing an updated snippet! I just
   tested it and it works perfectly! 🙂
 * I have a question though: let’s say I enter a larger number for the “line number
   to show” field – for example, the number “30” – and let’s say I have loads of
   snippets that contain less than 30 lines, and just a few that contain more than
   30 lines.
 * Is it possible for it to only return the snippets which actually contain 30+ 
   lines, and to skip the ones that don’t?
 * Because currently it just lists every single snippet I have (over 100 of them),
   even though most of them don’t contain that many lines.
 * I hope that makes sense! 🙂
 *  Plugin Author [Shea Bunge](https://wordpress.org/support/users/bungeshea/)
 * (@bungeshea)
 * [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16596949)
 * Absolutely! Apologies for taking so long to get back to you; I started working
   on an update but got sidetracked.
 * I’ve decided to upload the new snippet to our cloud platform, instead of needing
   to share another wall of code here: [https://codesnippets.cloud/snippet/shea/snippet-line-numbers](https://codesnippets.cloud/snippet/shea/snippet-line-numbers)
 * Please let me know if you have any other suggestions for how it might be improved.
 *  Thread Starter [GermanKiwi](https://wordpress.org/support/users/germankiwi/)
 * (@germankiwi)
 * [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16597453)
 * Thanks so much, [@bungeshea](https://wordpress.org/support/users/bungeshea/) –
   much appreciated!
 * However, I’m having trouble getting it to work. When I copy your snippet verbatim
   to my site, and I click the “Show” button on that subpage, it just gives me a
   blank, white page. Could you test it and see if it works for you?
 * Also, is it possible to set a different default value in the field, other than
   0? In my previous version of this snippet (the one I have in my comment above),
   I had the default set to 2. But with your snippet, if I change the number 0 to
   the number 2 at the end of line 4 of your snippet, then it automatically performs
   a search of line 2 whenever the subpage is opened, rather than waiting for the
   Show button to be clicked.
 *  Plugin Author [Shea Bunge](https://wordpress.org/support/users/bungeshea/)
 * (@bungeshea)
 * [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16600627)
 * That’s my bad [@germankiwi](https://wordpress.org/support/users/germankiwi/) –
   I changed the form to use GET instead of POST but forgot that doesn’t work super
   well on admin pages.
 * I’ve gone and added back in the default line number value. Hopefully the new 
   version works properly!
 * [https://codesnippets.cloud/snippet/shea/snippet-line-numbers ](https://codesnippets.cloud/snippet/shea/snippet-line-numbers )
 *  Thread Starter [GermanKiwi](https://wordpress.org/support/users/germankiwi/)
 * (@germankiwi)
 * [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16603814)
 * Thanks again [@bungeshea](https://wordpress.org/support/users/bungeshea/) – now
   it works perfectly!
 * In my opinion, you should consider adding this to the plugin itself – I think
   a lot of your users would find it very useful! 🙂
 *  Plugin Author [Shea Bunge](https://wordpress.org/support/users/bungeshea/)
 * (@bungeshea)
 * [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16604044)
 * We’ll definitely consider a good way to integrate it! I do think having additional
   features like this as snippets isn’t too bad though, as it allows for greater
   customisation.

Viewing 7 replies - 1 through 7 (of 7 total)

The topic ‘Display Line Numbers snippet’ is closed to new replies.

 * ![](https://ps.w.org/code-snippets/assets/icon.svg?rev=2148878)
 * [Code Snippets](https://wordpress.org/plugins/code-snippets/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/code-snippets/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/code-snippets/)
 * [Active Topics](https://wordpress.org/support/plugin/code-snippets/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/code-snippets/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/code-snippets/reviews/)

 * 7 replies
 * 2 participants
 * Last reply from: [Shea Bunge](https://wordpress.org/support/users/bungeshea/)
 * Last activity: [3 years, 1 month ago](https://wordpress.org/support/topic/display-line-numbers-snippet/#post-16604044)
 * Status: resolved