24 thoughts on “Moving single post metas to the bottom of the post

  • Menaka S

    You can probably disable categories and tags from post metas display.
    Also, hook into __after_article to display categories and tags to the bottom of the post.
    Please post at the support forum if you have any issues with this.

  • Michael Turner

    How can i move the categories and tags to the bottom of the Post? Date and author should remain under the headline.

  • Adam

    What if I only want to move the TAGS to the bottom but not the author and category and date?

  • Tanja

    Hi, this is great, thank you. But I would like to do a little bit more in the same direction. Could you please help me?

    I would like to move all of the stuff that comes before the content on single posts below it. The breadcrumbs, the title, the metas and the sharing buttons. Or the other way around, I would like to move the post content ahead of these, right below the header.

    I found the other instructions about how to add a block of content below the header but I’m not sure how I would have to reference the post content inside this code.

  • Mats

    Now I’ve tried to understand what’s wrong but I don’t get it. It looks ok except for the blog list where the metas shows up below the second separator.
    When I deleted:
    //Additional action to display an hr separator between content and metas.
    //We use the priority parameter to determine the rendering order of the action
    add_action (‘__after_article’ , ‘display_hr’, 0);

    One of the separators disappeared and it looks a bit better. But it would of course great if I could be able to move the metas above the separator.
    Gaah, sorry for being such an amateur! 😉

    • Nicolas Post author

      Hi Mats,

      You’ll want to use the collowing code to achieve what you need :

      I hope this will help 🙂

      • Brittney Lopez

        Hello Nicolas,
        I just inserted this code into my functions.php on a child theme, and it completely wiped my website clean.
        I am no receiving this message:
        “Fatal error: Cannot redeclare move_single_post_metas() (previously declared in /home/content/p3pnexwpnas09_data01/14/2484714/html/wp-content/themes/milk-wasted-mama_2/functions.php:9) in /home/content/p3pnexwpnas09_data01/14/2484714/html/wp-content/themes/milk-wasted-mama_2/functions.php on line 33”

        I cannot even access my wordpress dashboard!! PLEASE HELP!!!!

  • Mats


    I have two questions about the meta information:

    1. I’d like to move the metas to the bottom of the posts, both in the blog list and on the single posts.

    The single posts works fine with the code provided at the top of this page, but when I follow Nicolas instructions above, to delete
    if ( !is_single() )
    it seems like something’s missing.

    The metas shows up just above the header of the next post (in the list) instead of between the two separators at the end of the post.

    2. Is it possible to keep the publish date as it looks now and move the rest of the metas to the end of the post?

    I don’t know anything about the codes, I just copy & paste….;)

  • Magnus

    I used this snippet and it works fine on a single post page. A related question is, how to remove or move the meta information to the bottom of the excerpt that is listed when you visit the “blog” page, i.e. the list of posts? It clutters up the page.

    Thanks for any hints.
    Best regards, Magnus

    • MarkoH


      I have been looking for this also. The single post is not that much of an issue for me as there is so much stuff on single post anyhow that the meta does not affect its look that much. For excerpt it is different though when meta can suddenly take almost as much space as the text in excerpt itself. I would like to remove meta from the excerpt part if at all possible.

      • Nicolas Post author

        Hi Marcus and Markoh,
        It’s all about setting the right condition at the beginning of the function.
        In the provided snippet, I have used the ! is_single() conditional statement.

        If you get rid of it, the metas will be moved at the bottom of the post in every WordPress context : post, page, list of posts, search results, category, tags, date archives, …

        You can target more specifically the blog page with the is_posts_page property of the global $wp_query object generated by WordPress.

        This code means : if this is NOT the blog posts page, then return nothing (break the function if you will).

        Hope this helps!

    • Kate Newbill

      Yes, I am 99.9% sure that I put the code in the correct place. There is a child theme for Customizr, and I placed the code in the functions.php in the child theme. I put it first at the bottom, after some other stuff that the client already had in there. When that didn’t work, I moved it to the top of the file, just after

      It doesn’t seem to make any difference no matter where in the child theme functions file I place it.

  • Kate Newbill

    I’m sorry to be a problem, but the new code still isn’t working … I replaced the old code, uploaded the functions.php, and the tags are still at the top under the post title.

  • Kate Newbill

    Same as Allison … I added the code to the child functions file, refreshed the page, and no change.

    • Nicolas Post author

      Hi @Kate and @Allison, after verification I realized that there was a problem in the code.

      The hook to add the new actions has to be ‘__after_article’, instead of ‘__after_loop’.
      This is now fixed in the code snippet.

      Thanks for the feedback, this will help many people!
      Best regards and enjoy the theme.

  • Allison Eckel


    I selected the code above, copied it, and pasted it into the functions.php box in my child theme customizer. I saved it and refreshed my website, and nothing happened. The tags still appear at the top of the post, just below the title.

    Did I miss a step?
    Thank you

  • Ankur Sheel

    The above snippet wasnt working for me. More specifically, it was not removing orginal meta after the tile.
    I modified the line
    remove_action ( ‘__post_metas’ , array( TC_post_metas::$instance , ‘tc_post_metas’ ));
    remove_action ( ‘__after_content_title’ , array( TC_post_metas::$instance , ‘tc_post_metas’ ));

    • Nicolas Post author

      Hey thanks for this feedback Ankur! You are absolutely right, I just updated the snippet with the correct hook ‘__after_content_title’.
      Your contribution is much appreciated, cheers.

Comments are closed.