2017-09-12 25 views
1

Wordpressでブログを開発しており、実装が難しいいくつかの機能を紹介しています。Wordpress - ブログ投稿内に別の著者のアーカイブへのリンクを作成する

私たちのクライアントは、ブログの投稿でブログのユーザーを言いたいと思っています。これはエンドユーザーを上記の著者のプロフィールに連れて行きます。以下の例:

"We recently spoke to our newest team member Pete Smith"または"We recently spoke to our newest team member @PeteSmith"

あなたはピートの名前をクリックした場合、それはwebsite.com/authors/petesmith

にあなたを取るでしょう、私はWordpressのコメントセクションに組み込まれた機能性に言及しているが、方法があることを知っています実際のブログ記事の中でこれを達成するには?

私はこの質問に任意のコードを含めることはできません謝罪、単にあなたに人を示すために何もありません。

+0

どのようにするためのコードで簡単にアドレス著者ページのURLからコピーされた名前のリンクを作成する方法について? – Johannes

+0

これはうまくいくが、クライアントのオフィスのすべてのユーザーがこの方法でそれを行う方法を理解するわけではない –

答えて

1

あなたのfunctions.php内でこのようなものを使用することができます:私は、@記号の後のテキストは、著者のスラグであることを前提としてい

add_filter('the_content', 'the_content_func'); 

function the_content_func($content) { 
    $ret = preg_replace_callback ("/(@[A-Za-z]+)/", 
     function ($match) { 
      $authorName = mb_substr($match[0], 1); 
      $author = get_user_by('slug', $authorName); 
      if (! empty($author)) 
       return '<a href="' . get_author_posts_url($author->ID, $author->user_nicename) . '">' . $author->display_name . '</a>'; 
      else 
       return $authorName; 
     }, 
    $content); 
    return $ret; 
} 

私は与えられた作者を検索し、彼が見つかった場合、フィルタ内部そう表示名で対応する著者プロファイルリンクを出力します。それ以外の場合は、@記号&のURLなしの文字列を出力するだけです。

私があなたの目標を誤解した場合、preg_replace_callbackの内部機能を変更することをお勧めします。$ match [0]には、投稿内容の@記号付きのユーザーslugが含まれています。ここで

+0

これをお寄せいただきありがとうございます。上のコードはすべてのコンテンツを一掃し、@をリンクに置き換えます。私はこれを昼食後のショットにして、私がどのように乗っているかを教えてあげます:) –

+0

完璧に動作します、ありがとう! –

-1

は、著者のアーカイブページ

<a href="<?php echo get_author_posts_url(get_the_author_meta('ID'), get_the_author_meta('user_nicename')); ?>"><?php the_author(); ?></a> 
+0

これは投稿者のページにリンクするものではありません。これは、投稿体内から*別の*作成者のプロフィールにリンクすることです –

関連する問題