Hacking wp-syntax plugin to show header
I was recently asked how I got the wp-syntax plugin to show a header like so:
int main() { return 0; }
To show the test.cpp file name, I modified the wp-syntax.php
file (present in /wp-content/plugins/wp-syntax/
) like so:
Changed the regular expression in the wp_syntax_before_filter
function from:
function wp_syntax_before_filter($content) { return preg_replace_callback( "/\s*(.*)<\/pre>\s*/siU", "wp_syntax_substitute", $content ); }to
function wp_syntax_before_filter($content) { return preg_replace_callback( "/\s*<pre(?:lang=[\"']([\w-]*)[\"']|line=[\"'](\d*)[\"']|escaped=[\"'](true|false)?[\"']|header=[\"']([\w-\. ]*)[\"']|\s)+>(.*)<\/pre>\s*/siU", "wp_syntax_substitute", $content ); }
{: class=“prettyprint linenums:1”}
And the
wp_syntax_highlight
function to:function wp_syntax_highlight($match) { global $wp_syntax_matches; $i = intval($match[1]); $match = $wp_syntax_matches[$i]; $language = strtolower(trim($match[1])); $line = trim($match[2]); $escaped = trim($match[3]); $header = trim($match[4]); $code = wp_syntax_code_trim($match[5]); if ($escaped == "true") $code = htmlspecialchars_decode($code); $geshi = new GeSHi($code, $language); $geshi->enable_keyword_links(false); do_action_ref_array('wp_syntax_init_geshi', array(&$geshi)); $output = "\n<div class=\"wp_syntax\">"; if($header) { $output .= "<div class=\"wp_syn_hdr\">" . $header . "</div>"; }
{: class=“prettyprint linenums:94”}
Note the addition of lines 104 and 114-116.
All you have to do is add another attribute
header="header-text"
in your pre tag. ex.<pre lang="php" line="1" header="wp-syntax.php">