我有一个称为“源”(使用自定义Post类型UI)的自定义分类法,其中源是最初发布文章的出版物的名称。每个帖子都是一篇文章,并选择了一个来源。我需要做的是在帖子标题下的元数据中显示源代码。我正在使用Avada主题。当前帖子的标题区域如下所示:
Article Title
按作者姓名|月,年
我想要的是:
Article Title
作者姓名,来源,月份,年份
下面是我在开发环境中使用的一个示例帖子:
http://dev.universaltheosophy.com/articles/the-logos-and-meditation/
我希望能够在我的孩子主题的函数中使用add\\u action来实现这一点。php,并将其挂接在日期之前或作者名称之后。但我不知道该怎么做。
我在主题的单个帖子文件中看到的是:
<?php if ( \'below\' === Avada()->settings->get( \'blog_post_title\' ) ) : ?>
<?php if ( \'below_title\' === Avada()->settings->get( \'blog_post_meta_position\' ) ) : ?>
<div class="fusion-post-title-meta-wrap">
<?php endif; ?>
<?php $title_size = ( false === avada_is_page_title_bar_enabled( $post->ID ) ? \'1\' : \'2\' ); ?>
<?php echo avada_render_post_title( $post->ID, false, \'\', $title_size ); // phpcs:ignore WordPress.Security.EscapeOutput ?>
<?php if ( \'below_title\' === Avada()->settings->get( \'blog_post_meta_position\' ) ) : ?>
<?php echo avada_render_post_metadata( \'single\' ); // phpcs:ignore WordPress.Security.EscapeOutput ?>
</div>
<?php endif; ?>
<?php endif; ?>
我在主题文件中看到:
// Render author meta data.
if ( $settings[\'post_meta_author\'] ) {
ob_start();
the_author_posts_link();
$author_post_link = ob_get_clean();
// Check if rich snippets are enabled.
if ( fusion_library()->get_option( \'disable_date_rich_snippet_pages\' ) && fusion_library()->get_option( \'disable_rich_snippet_author\' ) ) {
/* translators: The author. */
$metadata .= sprintf( esc_html__( \'By %s\', \'Avada\' ), \'<span class="vcard"><span class="fn">\' . $author_post_link . \'</span></span>\' );
} else {
/* translators: The author. */
$metadata .= sprintf( esc_html__( \'By %s\', \'Avada\' ), \'<span>\' . $author_post_link . \'</span>\' );
}
$metadata .= \'<span class="fusion-inline-sep">|</span>\';
} else { // If author meta data won\'t be visible, render just the invisible author rich snippet.
$author .= fusion_render_rich_snippets_for_pages( false, true, false );
}
// Render the updated meta data or at least the rich snippet if enabled.
if ( $settings[\'post_meta_date\'] ) {
$metadata .= fusion_render_rich_snippets_for_pages( false, false, true );
$formatted_date = get_the_time( fusion_library()->get_option( \'date_format\' ) );
$date_markup = \'<span>\' . $formatted_date . \'</span><span class="fusion-inline-sep">|</span>\';
$metadata .= apply_filters( \'fusion_post_metadata_date\', $date_markup, $formatted_date );
} else {
$date .= fusion_render_rich_snippets_for_pages( false, false, true );
}
除此之外,我不确定我还需要什么其他信息。任何帮助都将不胜感激!请记住,我在这方面非常业余。
最合适的回答,由SO网友:Jon Fergus 整理而成
在几个教程的帮助下解决了这个问题。下面是我现在使用的代码:
function jwf_single_post_meta() {
// CATEGORY
$categories = get_the_category();
$catoutput = \'\';
if ( ! empty( $categories ) ) {
foreach( $categories as $category ) {
$catoutput .= \'<a target="_blank" href="\' . esc_url( get_category_link( $category->term_id ) ) . \'" alt="\' . esc_attr( sprintf( __( \'View all posts in %s\', \'textdomain\' ), $category->name ) ) . \'">\' . esc_html( $category->name ) . \'</a>\';
}
}
// AUTHOR
$author = get_the_author_meta( \'display_name\' );
$authorlink = get_author_posts_url( get_the_author_meta( \'ID\' ) );
// SOURCE
$sources = get_the_terms( $post->ID, \'source\' );
if ( ! empty( $sources ) && ! is_wp_error( $sources ) ){
foreach ( $sources as $source ) {
$sourcename = $source->name;
}
$sourcelink = get_term_link( $source );
$sep = __( \',\' );
}
// DATE
$original_date = get_the_time( \'F, Y\' );
// $modified_date = get_the_modified_time( \'F, Y\' );
// [Last Modified: $modified_date]</span>
echo "<span class=\'jwf-single-meta\'>$catoutput by <a href=\'$authorlink\'>$author</a>, <em><a href=\'$sourcelink\'>$sourcename</a></em>$sep $original_date";
}
最终结果是:按作者分类,来源,月份,年份
示例:Joe Smith的文章,《杂志名》,1975年10月
《某个家伙的翻译》,《系列名称》,2010年1月
我已经测试了两种插入此主题的方法,都包括将上述代码放入我的子主题函数中。php文件。选项一是使用add\\u filter覆盖主题的单个post元函数add_filter( \'the_author_posts_link\', \'jwf_single_post_meta\' );
. 选项二是覆盖主题的单个。php并在此处插入函数<?php echo jwf_single_post_meta(); ?>
. 选项2是我现在要做的。