Archived topic
'entry-meta' content customization
5 replies · Started by Dominik on April 14, 2016
Hi Folks,
I've just begun my adventure with GeneratePress, starting with the Premium version. I have not-so-small problem and unfortunately not-so-big knowledge about coding and Wordpress.
I'd like to add some infromation to replace the 'entry-meta' div content. New content should vary, depending on which category is assigned to the post. I also want to use Custom Tags with this, for example showing the post's difficulty (f.e. as a number from 1 to 10).
It should be easy. But fro me it is not. Where to begin? How should I do this? As a child theme? Plugin? Or both? Please show me the way and give some tips. I'd be really grateful. :)
Hi there,
So you want to replace the byline etc.. with custom text for each post? Any examples?
Thanks for your response! :)
I'd like to have two (in the future - even more!) different post's categories and I want them to be displayed much differently, for example:
1st category: ARTICLES
<<post title>>
Published: <<date and hour>> as part of <<category name with icon, just like below the content>>. Commented <<number>> times.
<<content>>
<<tags, no information about category or comments>>
2nd category: QUESTIONS //from readers
<<title>>
Asked <<date and hour>> by <<name of reader - from custom tag>>. Case difficulty: <<number from 1 to 10, from custom tag>>.
<<content>>
<<tags, no information about category or comments>>
That template may seem to be weird for you, but my language (Polish), I can say, supports it. :) I wish I've explained everything properly.
Doing something like this is pretty involved/requires a decent amount of custom programming.
You would have to add custom fields for things like the name of the reader.
Then you would need a decent amount of conditionals going on in the post meta function to tell which category you're using etc..
If you know a bit of programming, asking over on http://wordpress.stackexchange.com might be the quickest way to get an answer.
Or using a plugin like Advanced Custom Fields to create the custom fields for the name etc..
Hi Tom,
thank you for your tips! Being given them instead of ready-to-use solutions (like codes or sth) is exactly the way I like. I've achieved my dreamed result with very simple coding, just by myself. I'll post an image and my code here, hope it'll help someone. :) If anything is incorrect, please let me know. You'll also see how to move Categories and Comments sections from bottom to the top of an article.
The hardest was to find a function responsible for the so-called byline. It's the generate_posted_on() function. Here's my result (layout still in progress):
http://www.samachemia.net/wp-content/uploads/2016/04/screenshot.png
I've created child theme and added this code (copy-paste-change method :)) in child theme's functions.php file:
if ( ! function_exists( 'generate_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
function generate_posted_on() {
if ( 'post' !== get_post_type() )
return;
$categories = get_the_category();
if ( (! empty( $categories )) AND ($categories[0]->name == 'Krótkie pytania')) {
$date = apply_filters( 'generate_post_date', true );
$author = apply_filters( 'generate_post_author', true );
$time_string = '<time class="entry-date published" datetime="%1$s" itemprop="datePublished">Odpowiedź z %2$s, %5$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) )
$time_string .= '<time class="updated" datetime="%3$s" itemprop="dateModified">%4$s</time>';
$time_string = sprintf( $time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() ),
esc_attr( get_the_time() )
);
// If our date is enabled, show it
if ( $date ) :
printf( '<span class="posted-on">%1$s</span>',
$time_string
);
endif;
$zadajacy = get_post_meta( get_the_ID(), 'zadajacy', true );
echo '. Pytanie nadesłał(a) <span class="zadajacy">' . $zadajacy . '</span>.';
if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
comments_popup_link( __( 'Leave a comment', 'generatepress-child' ), __( '1 Comment', 'generatepress-child' ), __( '% Comments', 'generatepress-child' ) );
echo '</span>';
}
}
else { //jeśli nie krótkie pytanie, to co?
$date = apply_filters( 'generate_post_date', true );
$author = apply_filters( 'generate_post_author', true );
$time_string = '<time class="entry-date published" datetime="%1$s" itemprop="datePublished">Opublikowano %2$s, %5$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) )
$time_string .= '<time class="updated" datetime="%3$s" itemprop="dateModified">%4$s</time>';
$time_string = sprintf( $time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() ),
esc_attr( get_the_time() )
);
// If our date is enabled, show it
if ( $date ) :
printf( '<span class="posted-on">%1$s</span>',
$time_string
);
endif;
/* // If our author is enabled, show it
if ( $author ) :
printf( ' <span class="byline">%1$s</span>',
sprintf( '<span class="author vcard" itemtype="http://schema.org/Person" itemscope="itemscope" itemprop="author">%1$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','generate'),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
esc_attr( sprintf( __( 'View all posts by %s', 'generate' ), get_the_author() ) ),
esc_html( get_the_author() )
)
);
endif; */
$categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'generate' ) );
if ( $categories_list ) {
printf( ' w kategorii <span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>.',
_x( 'Categories', 'Used before category names.', 'generate' ),
$categories_list
);
}
if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
comments_popup_link( __( 'Leave a comment', 'generatepress-child' ), __( '1 Comment', 'generatepress-child' ), __( '% Comments', 'generatepress-child' ) );
echo '</span>';
}
}
}
endif;
And a little bit of CSS in child theme's style.css file:
.cat-links {
display: inline;
}
.comments-link {
display: inline;
float: right;
}
.zadajacy:before {
content: "\f007";
font-family: FontAwesome;
font-weight: normal;
font-style: normal;
display: inline-block;
text-decoration: inherit;
position:relative;
margin-right: 5px;
width: 13px;
text-align:center;
}
Hope somebody'll find it useful. :)
Best regards!
Awesome, great job! Thanks for sharing the code :)
