客座作者-如何使用自定义字段创建客座作者链接?

时间:2013-08-16 作者:Crystal Jones

我们正在发布客座作者撰写的文章。来宾作者将不会登录到该网站,我们不想为这些来宾作者创建用户。出于多种原因,我们对任何客座博客插件都不感兴趣。。

为了在来宾帖子中显示来宾作者的姓名,我在主题的函数中添加了一个函数。php文件,以便使用自定义字段,我的来宾作者姓名将出现在发布文章的WordPress用户的姓名的位置。。此功能概述如下:http://www.wpbeginner.com/wp-tutorials/how-to-rewrite-guest-author-name-with-custom-fields-in-wordpress/

使用此功能,我可以更改作者的姓名以显示来宾作者的姓名。。然而,作者链接仍然指向发布文章的WordPress用户的作者页面。

现在我想对作者链接做一些类似的事情。我想做的是让作者链接转到一个URL,我将在自定义字段中输入该URL,就像输入来宾作者的姓名一样。

这是我正在使用的代码,但它不起作用。作者链接仍然会将您带到发布文章的WordPress用户的作者页面。

add_filter( \'the_author_posts_link\', \'guest_author_link\', 10, 3);
add_filter( \'get_author_posts_url\', \'guest_author_link\', 10, 3);
add_filter( \'the_author_link\', \'guest_author_link\', 10, 3);
add_filter( \'get_author_link\', \'guest_author_link\', 10, 3);

function guest_author_link($link, $author_id, $author_nicename) {
  global $post;
  $url = get_post_meta( $post->ID, \'guest-url\', true );
    if( $url ) {
        $link = $url;
    }
    return $link;
}

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

Remove 链接的教程中使用的过滤器和函数,并将其替换为以下代码:

add_filter( \'get_the_author_user_url\', \'guest_author_url\' ); 
add_filter( \'the_author\', \'guest_author_link\' ); 
add_filter( \'get_the_author_display_name\', \'guest_author_name\' );

function guest_author_url($url) {
  global $post;
  $guest_url = get_post_meta( $post->ID, \'guest-url\', true );
  if ( filter_var($guest_url, FILTER_VALIDATE_URL) ) {
    return $guest_url;
  } elseif ( get_post_meta( $post->ID, \'guest-author\', true ) ) {
    return \'#\';
  }
  return $url;
}

function guest_author_link($name) {
  global $post;
  $guest_url = get_post_meta( $post->ID, \'guest-url\', true );
  $guest_name = get_post_meta( $post->ID, \'guest-author\', true );
  if ( $guest_name && filter_var($guest_url, FILTER_VALIDATE_URL) ) {
    return \'<a href="\' . esc_url( $guest_url ) . \'" title="\' . esc_attr( sprintf(__("Visit %s&#8217;s website"), $guest_name) ) . \'" rel="author external">\' . $guest_name . \'</a>\';
  } elseif( $guest_name ) {
    return $guest_name;
  }
  return $name;
}

function guest_author_name( $name ) {
  global $post;
  $guest_name = get_post_meta( $post->ID, \'guest-author\', true );
  if ( $guest_name ) return $guest_name;
  return $name;
}
现在您可以使用the_author_link() 查看您的客座作者的姓名和链接,但请注意,如果您的客座作者not url函数将显示链接同一页面的来宾作者的姓名(href="#").

如果不喜欢此行为,请在模板文件中替换the_author_link() 具有the_author() 如果你的客座作者有名字和url,那么会显示链接,否则你只会看到名字。

请注意,来宾urlmust be a valid url (以http://or https:///开头),否则将不会显示。

结束

相关推荐

Author Profile URL

我有2个用户角色。“摄影师”和“订阅者”我已经确定了我的作者。像这样的php<?php get_header(); $thisauthor = get_userdata(intval($author)); $author_user = $wp_query->get_queried_object(); ?> <div id=\"main\"> <?php if (u