Support » Fixing WordPress » print only what’s in the Shortcode

  • Resolved Shaooxz


    hey guys,
    I’m looking for a way that i can click print on my blog and only the content that is in Shortcode will print out.
    I’m also looking for a way that what’s in the shortcode will standout from the rest of the post.
    bla bla bla [print] print only this content and make the writing bold and the background color green [/print] bla bla bla


Viewing 15 replies - 1 through 15 (of 20 total)
  • I think this will do what you want, but you may need to tweak it some. Put it in your functions.php, but be careful – you can disable your blog. Be sure to make a backup copy so you can ftp it back if you need to.

    <?php // [mm-hilite]some text here[/mm-hilite]
    function mm_hilite_func($atts, $content=null) {
    		'noatts' => 'Unknown',
    	), $atts));
    	$output = '';
       if (!is_null($content)) {
    		$output = "<span style='background: green; font-weight: bold;'>$content</span>";
       return $output;
    add_shortcode('mm-hilite', 'mm_hilite_func');

    this is grat vtxyzzy, but it covers only the highlighting part. how can i make th WP-print plugin (or any other print plugin) to print ONLY what’s in [mm-hilite]some text here[/mm-hilite] ?

    I think I misunderstood what you wanted. Did you want to not print anything outside the markers, but only the text between with nothing else?

    i did but now i have this problem:

    i don’t know if it has nothing to do with it or its from the 2.9 upgrade. Any way i copied the original file but i still have that problem.. btw u did mean the functions.php in the theme right?

    Yes, I meant the functions.php in the theme. However, there is a basic problem with using shortcodes to affect text OUTSIDE the markers. That text is not passed to the shortcode function, so it cannot be suppressed as far as I know.

    To do that would require you to write your own function for the_content filter. The function would scan for your markers and return only the text between them, probably using a regular expression.

    That is beyond what I can do in this forum – sorry.

    “Did you want to not print anything outside the markers, but only the text between with nothing else? “

    yes, that’s exactly what i wanted. Your code works great for the highlighting part but when i try to print i still see all of the post.
    Any other recommendations guys?

    It might be possible to put the text you want to print inside a special div tag and then provide a print.css file to hide the rest of the text – just a thought.

    i dont know how101cookbooks do it but that’s a great example for what im looking for.


    vtxyzzy, i have another question. how can i use the code you gave me but i want the style to be in my style.css?
    something like

    Inside the span tag, put a class name instead of the style. Then put the style for that class in your style.css.

    Where on the 101Cookbooks site is the example of what you want?

    something like that?

    $output = "<span recipe='background: green; font-weight: bold;'>$content</span>";


    #recipe {

    Like this

    $output = "<span class='recipe';>$content</span>"


    .recipe {
       background-color: #F7F7E7;

    thanks vtxyzzy for your help!
    its working.. kinda
    if im using margin-right:50px; in my css only the first line will move, not all the writing in the shortcode. if i’ll use background-color in my css i won’t get a square block of color but only where there’s writing will get background color. i have no idea why the css acts like that now

    Can you put the writing in a div or p tag instead of a span, or will that mess up the surrounding text?

    it will create a mess. the idea was to do it once and after that just to use shortcode in my post without writing divs every post

Viewing 15 replies - 1 through 15 (of 20 total)
  • The topic ‘print only what’s in the Shortcode’ is closed to new replies.