ホーム > フォーラム > 質問箱 > wordpress で投稿者のプロフィールを表示させるようにしたい

wordpress で投稿者のプロフィールを表示させるようにしたい
投稿者: akikoaa | 投稿日時: 2007-8-13 11:36 | 閲覧: 5620回
akikoaa
こんにちは。
現在wordpressの0.5を使用しています。


記事を表示させた時に投稿者名が表示されますが、このリンクをクリックすると投稿者の記事が表示されますが、このリンクを
「userinfo.php?uid=投稿者のユーザーID」

のように、投稿者のプロフィールを表示させるようにしたいんですが
どのようにしたらいいのか分かりません。


どなたかご存知の方がいらっしゃいましたら教えていただけますでしょうか?



よろしくおねがいします。

コメント(9)

Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: akikoaa | 投稿日時: 2007-8-13 12:06
akikoaa
のぶのぶさんのサイトを調べたところ、ブログのタイトルの下にある投稿者名をクリックすると、XOOPSのプロフィールにリンクする事ができるTempate関数を用意する必要があるそうなんですが、関数の定義の方法が分からずに困っています。

Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: kusuchin | 投稿日時: 2007-8-13 13:37
kusuchin
akikoaaさん、こんにちは。

実際に、WordPress 0.5.0 RC Final (Full package)をダウンロードして、ソースを見てみました。

標準での投稿者名のリンク先は、
XOOPS_URL/modules/wordpress/index.php?author=(user_id)
になっているみたいですね。

で、"author="で、モジュール内に検索を掛けてみましたところ、
以下のファイルの行がヒットしました。

※以下の箇所を参考にされてみては、いかがでしょうか。

modules/wordpress/wp_includes/template-functions-author.php
function get_author_link($echo = false, $author_id, $author_name="") {
    $permalink_structure = get_settings('permalink_structure');
    
    if ($permalink_structure == '') {
        $link = wp_siteurl() . '/index.php?author='.$author_id;
    } else {
        if ($author_name =='') $author_name = $GLOBALS['cache_userdata'][wp_id()][$author_id]->user_login;
        // Get any static stuff from the front
        $front = substr($permalink_structure, 0, strpos($permalink_structure, '%'));
        $link = wp_siteurl() . $front . 'author/';
        $link .= rawurlencode($author_name) . '/';
    }
	return _echo($link, $echo);
}


希望通りにする方法は、ぱっと思いつくので2通りありました。

(1)get_author_link()関数をいじっちゃう
(2)希望通りの関数を新たに定義し、get_author_link()関数を呼び出している箇所で、
 必要に応じ、新しい関数の呼び出しに置き換える

(1)の方が簡単かと思いますが、標準のget_author_link()関数を必要とする
箇所もある可能性もあるので、判断は難しいですね。

例えば、get_author_rss_link()関数内でも、get_author_link()関数を呼び出しており、
(1)の場合ですと、都合が悪くなる可能性があります。

そのへんは、"get_author_link"で検索を掛けてみて、
御自身で判断されるのが良いかと思います。
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: akikoaa | 投稿日時: 2007-8-13 14:40
akikoaa
kusuchinさん、レス有難うございます。

私の場合だと2が適切なのかなと思ったのですが、関数の定義の仕方などが分かりません。。


プログラムについてはあまり詳しく分からないので、どうしたものかと思っています。



投稿型のサイトでwordpressを使用する場合、タイトルの下にある投稿者名をクリックすると、XOOPSのプロフィールにリンクする事ができる機能などはあった方がいいと思うんですが、みなさんそういった使い方をしないのでしょうか…
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: kusuchin | 投稿日時: 2007-8-13 17:24
kusuchin
引用:

私の場合だと2が適切なのかなと思ったのですが、関数の定義の仕方などが分かりません。。

プログラムについてはあまり詳しく分からないので、どうしたものかと思っています。


まずは、勉強してみてください。

先程、掲載させて頂きましたソースコード部分がずばり回答の状態です。

そのソースコードを見た上で、わからないということでしたら、
PHPの本当の基礎の部分だけでもよろしいですので、勉強してみてください。

で、PHPの基礎力をつけた上で、以下のコメントを参考にして頂ければと思います。

(※自己責任でお願い致します。)


●WordPressの投稿者名のリンク先をuserinfo.phpに変更するカスタマイズ

【手順1】以下のソースコードを先程のソース直下にでもコピペしてください。(※追加挿入)

modules/wordpress/wp_includes/template-functions-author.php
function get_author_userinfo_link($echo = false, $author_id, $author_name="") {
    $permalink_structure = get_settings('permalink_structure');
    
    if ($permalink_structure == '') {
        $link = XOOPS_URL . '/userinfo.php?uid=' .$author_id;
    } else {
        if ($author_name =='') $author_name = $GLOBALS['cache_userdata'][wp_id()][$author_id]->user_login;
        // Get any static stuff from the front
        $front = substr($permalink_structure, 0, strpos($permalink_structure, '%'));
        $link = wp_siteurl() . $front . 'author/';
        $link .= rawurlencode($author_name) . '/';
    }
	return _echo($link, $echo);
}


【手順2】modules/wordpress/wp_includes/template-functions-author.php内の
73行目の以下の"get_author_link"を"get_author_userinfo_link"に置き換えてください。

function the_author_posts_link($idmode='', $echo=true) {
    return _echo('<a href="' . get_author_link(0, $GLOBALS['authordata']->ID, $GLOBALS['authordata']->user_login) . '" title="' . sprintf("Posts by %s", the_author($idmode, false)) . '">' . the_author($idmode, false) . '</a>', $echo);
}


【手順3】投稿者名のリンク先が、userinfo.phpになったことをWeb上で確認してみてください。

※今回の件に関しまして、こちらもそれなりの時間と労力を費やしておりますので、
Web上ででもよろしいですので、PHPの簡単なマニュアルを見つけ、御一読お願い致します。

※バージョンアップ時にでも対応できるように、必ず、カスタマイズの履歴が
残るようにしてください。
(手書きでもデータでもよろしいですので。)
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: akikoaa | 投稿日時: 2007-8-14 10:11
akikoaa
kusuchin さん
ご丁寧に有難うございます。
資料読んで見て、kusuchin さんの通り試してみました。


しかし、リンクに変化が見られませんでした。
そこで、72行目を以下のように変更して試してみましたが、
リンクに変化が見られませんでした。
function the_author_posts_link($idmode='', $echo=true) {
return _echo("", $echo);
// return _echo('
' . the_author($idmode, false) . '', $echo);

モジュール・ブラウザ・XOOPSのキャッシュはクリアにして試してみましたが、変化が無いという事は、この箇所がうまく動作していないという事になると思うんですが、原因が分からずに困っております。。。
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: kusuchin | 投稿日時: 2007-8-14 11:15
kusuchin
PHPのマニュアルにも目を通して頂けたようで、何よりです。

御確認なんですが、以下の赤字部分のリンク先の変更ということで
よろしいんですよね?

引用:

2007年8月13日(月曜日)
ようこそ、WordPressの世界へ!
カテゴリー: General- admin @ 17時00分35秒 記事編集
WordPress ME for Xoops2の導入成功おめでとうございます。
. This is the first post. Edit or delete it, then start blogging!


こちらの環境(XSAS_Plain & WordPress 0.5.0 RC Final)では、
何ら問題もなく、変更が反映されております。

引用:

モジュール・ブラウザ・XOOPSのキャッシュはクリアにして試してみましたが、変化が無いという事は、この箇所がうまく動作していないという事になると思うんですが、原因が分からずに困っております。。。


この部分は、キャッシュされるところじゃないと思うんですね・・・。

考えられるのは、XOOPSが動いてる環境でない(ローカルなどの)ファイルを編集していることとかでしょうか・・・。

一度、サーバ上の上記ファイルが、きちんと変更されているか確認してみてください。

また、ローカルテスト用にXOOPS環境を構築することができる『XSAS_Plain』という
便利なツールもありますので、そちらでテストもしてみてください。
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: kusuchin | 投稿日時: 2007-8-14 11:39
kusuchin
引用:

のぶのぶさんのサイトを調べたところ、ブログのタイトルの下にある投稿者名をクリックすると、
XOOPSのプロフィールにリンクする事ができるTempate関数を用意する必要があるそうなんですが、
関数の定義の方法が分からずに困っています。


偏見のまま話を進めちゃってました。

わざわざ新たにTemplate関数を作らなくても、もともと用意されてるみたいです。(※ChageLogとReadMe.ja-eucjpを参照)

(用意されているだけで、どこからも呼び出されていないようですが・・・。)

modules/wordpress/wp_includes/template-functions-author.php
function the_author_info_link($idmode='', $echo=true) {
    return _echo('<a href="' . XOOPS_URL . '/userinfo.php?uid=' .the_author('ID',false) . '" title="' . sprintf("Posts by %s", the_author($idmode, false)) . '">' . the_author($idmode, false) . '</a>', $echo);
}


ですので、今までのを全部白紙に戻してもらって、以下の3ファイル内の
"get_author_posts_link"を"get_author_info_link"に置き換えてもらうだけでもOKみたいです。

お好きな方でやってみてください。

※WordPressディレクトリ内を"get_author_posts_link"で検索を掛けてみてください。
以下の3ファイルがヒットするはずです。

・modules/wordpress/blocks/wp_contents.php
・modules/wordpress/themes/default/content_block-template.php
・modules/wordpress/themes/default/index-template.php
Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: akikoaa | 投稿日時: 2007-8-14 12:29
akikoaa
kusuchinさん有難うございました。
すいません、私も偏見のまま話を進めてしまっていましたね><

お陰様で、無事にリンクできるようになりました!
有難うございます。


最後に、XOOPSのTOPページにも記事の内容を表示するようにしているのですが、ここのリンクに何も変化が起こりません。

3つ以外の別のファイルがあると思うのですが、
the_author_posts_linkで検索をかけてもHITしません。


Re: wordpress で投稿者のプロフィールを表示させるようにしたい 
投稿者: kusuchin | 投稿日時: 2007-8-14 13:14
kusuchin
『WordPress 記事ブロック』のことですよね?

先程のレス内にあります、modules/wordpress/blocks/wp_contents.phpの編集で、
こちらの環境では反映致しました。

もし、正確な手順を踏んだ上でも、ダメな場合は、PMください。

    投票(0)

    新しいものから | 古いものから | RSS feed
     


    概要 | ダウンロード | ニュース | フォーラム | 開発情報 | ツール | テーマ | モジュール
    お問い合わせ | プライバシーポリシー
    Copyright © 2001-2009 XOOPS Cube日本サイト