Site logo

Archived topic

Filter generate_post_author_output not apply to Page Header add-on

3 replies · Started by Adrian on August 10, 2017

Viewing posts 1–4 of 4

Hi!

I have the "Page Header" add-on enabled. I have created a header to the posts like this:

<h1>{{post_title}}</h1>
{{post_author}}
{{post_date}}

All perfect. Now I need to remove the {{post_author}} and {{post_date}} links, plus I have to add the author's avatar, but when I using the 'generate_post_author_output' filter does not affect it.

I have tried different ways even with one of your examples:

add_filter( 'generate_post_author_output', 'tu_add_author_gravatar' );
function tu_add_author_gravatar() {
	printf( ' <span class="byline">%1$s</span>',
		sprintf( '<span class="author vcard" itemtype="http://schema.org/Person" itemscope="itemscope" itemprop="author">%1$s %5$s<a class="url fn n" href="%2$s" title="%3$s" rel="author" itemprop="url"><span class="author-name" itemprop="name">%4$s</span></a></span>',
			__( 'by','generatepress'),
			esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
			esc_attr( sprintf( __( 'View all posts by %s', 'generatepress' ), get_the_author() ) ),
			esc_html( get_the_author() ),
			get_avatar( get_the_author_meta( 'ID' ) )
		)
	);
}

Can not filters be applied when using the "Page Header" add-on?

Then, since the filter did not work for me, I tried to put it in the following way:

add_action( 'generate_after_entry_title','arj_add_custom_meta');
function arj_add_custom_meta(){

    if (is_singular('post')) {
        global $post;
        $author_id = $post->post_author;
?>
    <div class="foto-autor">
        <?php // Avatar del usuario del post.
            echo get_avatar( $author_id );
        ?>
    </div>
    <p class="autor-post"><?php echo get_the_author_meta( 'nickname', $author_id ); ?></p>
    <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('d F Y'); ?></time>
<?php
    }
}

But having the add-on activated, what I add to this filter appears inside the article, not inside the header.

Thanks in advance!

The Page Header add-on uses a very stripped down version of those elements - it doesn't include all the HTML that's included in the regular meta.

However, you can create a shortcode, and add that into the page header:

function tu_custom_author_meta() {
  ob_start();
  global $post;
  $author_id = $post->post_author;
  ?>
  <div class="foto-autor">
        <?php // Avatar del usuario del post.
            echo get_avatar( $author_id );
        ?>
    </div>
    <p class="autor-post"><?php echo get_the_author_meta( 'nickname', $author_id ); ?></p>
    <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('d F Y'); ?></time>
  <?php
  return ob_get_clean();
}
add_shortcode( 'author_meta','tu_custom_author_meta' );

Then just use [author_meta] in the Page Header content.

Many thanks Tom!!

It works perfect, I thought you could not use shortcodes in that part!

And thanks for adding "ob_start()" I had not noticed!

You're welcome! :)

This archived topic is closed to new replies.