メンバー

  • nekyo さんのプロフィール写真
    アクティブ: 6か月 2週前
  • コピー1 さんのプロフィール写真
    アクティブ: 1年 11か月前

最近の活動メンバー

nekyo さんのプロフィール写真
コピー1 さんのプロフィール写真

最近のコメント

メンバーページのリンクを作成する

buddypress のプラグインやテーマを見たけれど、標準では、記事内で簡単にメンバーページのリンクを表示するショートコードは用意されていなそう。
# 誰か知っている人が居たら教えて

サイトのURL取得は get_option(‘home’) または get_option(‘siteurl’) を使って、
記事の投稿ユーザのログイン名は get_the_author_meta(‘user_login’) を使って取得する。
なので、メンバーページへのリンクは以下の様になる。

<?php
    $murl = get_option('home') . '/members/' . get_the_author_meta('user_login');
    echo "<a href=\"$murl\">$murl</a>\n";
?>

ただし、記事中で標準では <?php~?> のphpコードは実行できない。実行するには Exec-PHP などのプラグインがインストールが必要。
でも、複数のユーザで使う BuddyPress で、記事に phpコードを使えると色々できてしまうので、セキュリティ的にちょっと心配

なので、対応方法はさしあたり2つ。いずれも記事でPHPを使えるようにする必要はない。

対応方法1:記事のテンプレートに記述

記事のテンプレートのユーザ表示部分にメンバーページのリンクも記述してしまう。
メリット:何もしなくても自動的にリンクが表示される。
デメリット:全ての記事に適応されてしまう(逆にメリット?)。テンプレートの場所がテーマによって違う

ちなみに、ここのテーマは BuddyPress 対応の Simple Portal で、親テーマ Twenty Thirteen のテンプレートを引き継いでいる。
ブログの一覧を表示しているのは Twenty Thirteen の content.php なので

<div class="entry-meta">
        <?php twentythirteen_entry_meta(); ?>

の下に

<?php
    echo "<a href=\"" . get_option('home') . '/members/' . get_the_author_meta('user_login')
       . "\" title=\"メンバーページへ\"><span class=\"glyphicon glyphicon-info-sign\"></span></a>\n";
?>&nbsp;&nbsp;&nbsp;

を追加する。この記事の上にある が実行結果なので、クリックしてみてください。
Twenty Thirteen の functions.php に記述されている twentythirteen_entry_meta 関数の中に追記しても良いかもしれない。
※ ただし bootstrap を使っていないと アイコンは表示されないので適宜置き換え。

対応方法2:ショートコードを定義する

ショートコードを定義して、それを記述するとメンバーページのリンクが表示されるようにする。
メリット:ユーザが記事内で個別にショートコードでリンクを表示できる。
デメリット:ショートコードを書かないとリンクが表示されない。
なので作ってみた。これを function.php の一番最後とかに追記する。

/**
 * メンバーのリンクを表示する
 * [memberslink] [memberslink label='メンバーのリンク']
 * @param label ラベル(省略時は URL)
 * @author nekyo.
 */
function membersLinkFunc($atts) {
    extract(shortcode_atts(array('label' => null,), $atts));
    $murl = get_option('home') . '/members/' . get_the_author_meta('user_login');
    if (!$label) {
        $label = $murl;
    }
    return "<a href=\"$murl\">" . htmlspecialchars($label) . "</a>\n";
}
add_shortcode('memberslink', 'membersLinkFunc');

実行結果:メンバーのリンク


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ