Hello,
On my site - http://walrustri.com/news/ - I would like to replace the automatic author field (that appears in the post metadata) with a custom field from ACF Pro. Is that possible?
Thanks!
Alex
Hello,
On my site - http://walrustri.com/news/ - I would like to replace the automatic author field (that appears in the post metadata) with a custom field from ACF Pro. Is that possible?
Thanks!
Alex
Hello @AlexH,
Thanks for writing in! :slight_smile
You can only hide the author field by checking Hide Authors
checkbox in the custom field group settings, and add your new custom field that you would like to show.
Hope that helps.
Hi Jumar,
I’m referring to the author name that appears in the blog archive as part of the ‘post meta’. I can turn the post meta on and off through the theme customiser, but really I just want to turn the author meta off, and replace it with my own field… hope that makes sense!
Alex
Hi Alex,
To achieve that, you can add the code below in your child theme’s functions.php
file then modify it as you wish.
function x_renew_entry_meta() {
//
// Author.
//
$author = sprintf( '<span>%s</span>',
get_the_author()
);
//
// Date.
//
$date = sprintf( '<span><time class="entry-date" datetime="%1$s">%2$s</time></span>',
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() )
);
//
// Categories.
//
if ( get_post_type() == 'x-portfolio' ) {
if ( has_term( '', 'portfolio-category', NULL ) ) {
$categories = get_the_terms( get_the_ID(), 'portfolio-category' );
$separator = ', ';
$categories_output = '';
foreach ( $categories as $category ) {
$categories_output .= '<a href="'
. get_term_link( $category->slug, 'portfolio-category' )
. '" title="'
. esc_attr( sprintf( __( "View all posts in: “%s”", '__x__' ), $category->name ) )
. '"> '
. $category->name
. '</a>'
. $separator;
}
$categories_list = sprintf( '<span>%s</span>',
trim( $categories_output, $separator )
);
} else {
$categories_list = '';
}
} else {
$categories = get_the_category();
$separator = ', ';
$categories_output = '';
foreach ( $categories as $category ) {
$categories_output .= '<a href="'
. get_category_link( $category->term_id )
. '" title="'
. esc_attr( sprintf( __( "View all posts in: “%s”", '__x__' ), $category->name ) )
. '">'
. $category->name
. '</a>'
. $separator;
}
$categories_list = sprintf( '<span>%s</span>',
trim( $categories_output, $separator )
);
}
//
// Comments link.
//
if ( comments_open() ) {
$title = apply_filters( 'x_entry_meta_comments_title', get_the_title() );
$link = apply_filters( 'x_entry_meta_comments_link', get_comments_link() );
$number = apply_filters( 'x_entry_meta_comments_number', get_comments_number() );
$text = ( 0 == $number ) ? __( 'Leave a Comment', '__x__' ) : sprintf( _n( '%s Comment', '%s Comments', $number, '__x__' ), $number );
$comments = sprintf( '<span><a href="%1$s" title="%2$s" class="meta-comments">%3$s</a></span>',
esc_url( $link ),
esc_attr( sprintf( __( 'Leave a comment on: “%s”', '__x__' ), $title ) ),
$text
);
} else {
$comments = '';
}
//
// Output.
//
if ( x_does_not_need_entry_meta() ) {
return;
} else {
printf( '<p class="p-meta">%1$s%2$s%3$s%4$s</p>',
$author,
$date,
$categories_list,
$comments
);
}
}
You may want to change this part
//
// Author.
//
$author = sprintf( '<span>%s</span>',
get_the_author()
);
Thanks
Super - it works! I changed get_the_author() to the_field(‘author’). Strangely it no longer outputs the result inline with the other meta items though… see attached. Not sure why that is!?
Thanks for the great help.
Alex
Hi Alex,
Try to use get_field('author')
instead of the_field('author')
Thanks