記事一覧の設置
永らくありがとうございました › フォーラム › 使い方全般 › 記事一覧の設置
- このトピックには9件の返信、2人の参加者があり、最後に
匿名により11年、 1ヶ月前に更新されました。
-
投稿者投稿
-
2011 年 12 月 11 日 7:20 AM #2679
匿名
ゲストご無沙汰しております。
記事の一覧を表示したくて、分からないなりに以下のようにカスタマイズしました。
wp-content/themes/***/footer.php に以下のような感じで追加。
<code><div class="centeroutline"><br /> <div class="centerCblockTitle"><?php _e(mb_convert_encoding("バックナンバー(記事の一覧 - 新しい順)", "$xoops_charset", "SJIS"), 'xpress'); ?></div><br /> <div class="centerCblockContent"><br /> <ol><br /> <?php wp_get_archives('type=postbypost'); ?><br /> </ol><br /> </div><br /> </div></code>
上記のままだと、一覧は表示されるものの各記事の投稿日が表示されないので、以下のように修正。
wp-includes/general-template.php
function wp_get_archives($args = ”) {
<code>- $output .= get_archives_link($url, $text, $format, $before, $after);<br /> <br /> + $output .= get_archives_link($url, $text, $format, $before, '('.mysql2date($archive_day_date_format, $arcresult->post_date).')');</code>
これでとりあえずは、実現できたのですが・・・。
1.wp-includes/general-template.phpを直接いじっているので、wordpressの自動アップデートを行うと、ハックが消えてしまう。
2.記事が新しい順に表示されるが、”ol”タグを用いているので、新しい順に通番が表示される。投稿順に通番を振れないか?
3.アクセス数のトップテンに、”人気”みたいな表示ができないか?
4.ブロックだと、記事の上に表示されるか下に表示されるかはXOOPS側のテーマで決まってしまう(私のサイトの場合は上に表示しています)と思いますが、XPressMEの固有設定で、それとは別に表示(私のサイトの場合は下に表示したい)できるようにならないでしょうか?方法が見つからなかっため、wp-content/themes/***/footer.phpに前述の修正を加えました。
wp-includesとかをいじっているので、XPressMEというよりは、wordpress側の機能拡張になるのかもしれませんが、XPressMEの機能拡張で、ブロックや、記事一覧ページとかを生成できたらよいなということで、“要望”ということで投稿させていただきます。
特に急いでいるわけではありませんので、お手すきのときにでもご検討いただければと思います。
よろしくお願い致します。
2011 年 12 月 14 日 3:32 AM #3295toemon
キーマスターheijiさんお久しぶりです。
1.wp-includes/general-template.phpを直接いじっているので、wordpressの自動アップデートを行うと、ハックが消えてしまう。
wp_get_archives()をハックしたものを新たな関数としてプラグイン化するのがベストかと思いますのでプラグインとして考えようと思います。
2.記事が新しい順に表示されるが、”ol”タグを用いているので、新しい順に通番が表示される。投稿順に通番を振れないか?
[例1]
3. post3(2011/12/01)
2. post2(2011/11/01)
1. post1(2011/10/01)
みたいな感じということでしょうか?
[例2]
1. post1(2011/10/01)
2. post2(2011/11/01)
3. post3(2011/12/01)
ということでしょうか?
[例1]の場合は<li value=”**”>という記述が出来ますので
<code>$results_count = count($arcresults);<br /> foreach ( (array) $arcresults as $arcresult ) {<br /> ..<br /> $output .= 't<li value="' . $results_count-- . "">$before<a href='$url' title='$title_text'>$text</a>$after</li>n";<br /> ..<br /> }</code>
みたいな感じで実現できそうな気がします
[例2]の場合はクエリーした結果をarray_reverse()でひっくり返してやればよさそうな気がします。
とりあえず、の返信なので実証はしていません。
3.アクセス数のトップテンに、”人気”みたいな表示ができないか?
すみません、これはちょっと意味がわかりません。
2011 年 12 月 14 日 10:07 AM #3296toemon
キーマスターちょっとやってみました
こんな感じのプラグインでどうでしょう?
<code><?php<br /> /*<br /> Plugin Name: WP Posts List Ex<br /> Plugin URI: http://exsample.com<br /> Description: WP Posts List Ex (custom function)<br /> Author: Foo<br /> Version: 1.0<br /> Author URI: http://exsample.com<br /> */<br /> <br /> function wp_posts_list_ex($args = '') {<br /> global $wpdb, $wp_locale;<br /> <br /> $defaults = array(<br /> 'limit' => '',<br /> 'before' => '',<br /> 'after' => '',<br /> 'list_type' => 'ul', //Set value are 'ul' or 'ol'.<br /> 'ol_type' => '', //Set value are '1','a','A','i' or 'I'. Only enable if the OL tag is selectedvalue<br /> 'ol_start' => '',<br /> 'li_value_revarse' => false, //Only enable if the OL tag is selected<br /> 'show_reverse' => false,<br /> 'show_date' => false,<br /> 'date_format_txt' => '',<br /> 'echo' => true<br /> <br /> );<br /> <br /> $r = wp_parse_args( $args, $defaults );<br /> extract( $r, EXTR_SKIP );<br /> <br /> if ( '' != $limit ) {<br /> $limit = absint($limit);<br /> $limit = ' LIMIT '.$limit;<br /> }<br /> <br /> //filters<br /> $where = apply_filters( 'wp_posts_list_ex_where', "WHERE post_type = 'post' AND post_status = 'publish' AND post_date != '0000-00-00 00:00:00'", $r );<br /> $join = apply_filters( 'wp_posts_list_ex_join', '', $r );<br /> <br /> $output = '';<br /> <br /> $orderby = 'post_date DESC ';<br /> $query = "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $limit";<br /> $key = md5($query);<br /> $cache = wp_cache_get( 'wp_posts_list_ex' , 'general');<br /> if ( !isset( $cache[ $key ] ) ) {<br /> $arcresults = $wpdb->get_results($query);<br /> $cache[ $key ] = $arcresults;<br /> wp_cache_set( 'wp_posts_list_ex', $cache, 'general' );<br /> } else {<br /> $arcresults = $cache[ $key ];<br /> }<br /> if ( $arcresults ) {<br /> $results_count = count($arcresults);<br /> if($show_reverse) {<br /> $arcresults = array_reverse($arcresults);<br /> }<br /> if ($list_type=='ul'){<br /> $output .= "<ul>n";<br /> } else {<br /> switch($ol_type){<br /> case '1':<br /> $style = "style='list-style-type: decimal'";<br /> break;<br /> case 'a':<br /> $style = "style='list-style-type: lower-alpha'";<br /> break;<br /> case 'A':<br /> $style = "style='list-style-type: upper-alpha'";<br /> break;<br /> case 'i':<br /> $style = "style='list-style-type: lower-roman'";<br /> break;<br /> case 'I':<br /> $style = "style='list-style-type: upper-roman'";<br /> break;<br /> default:<br /> $style ='';<br /> }<br /> if (!empty($ol_start) && is_numeric($ol_start)){<br /> $start = 'start='. $ol_start;<br /> } else {<br /> $start = '';<br /> }<br /> $output .= "<ol $start $style>n";<br /> }<br /> foreach ( (array) $arcresults as $arcresult ) {<br /> $url = get_permalink( $arcresult );<br /> // post date<br /> if ($show_date){<br /> if ( '' == $date_format_txt ){<br /> $the_date = ' ('.mysql2date(get_option('date_format'), $arcresult->post_date).')';<br /> } else {<br /> $the_date = ' ('.mysql2date($date_format_txt, $arcresult->post_date).')';<br /> }<br /> } else {<br /> $the_date = '';<br /> }<br /> if ( $arcresult->post_title )<br /> $text = strip_tags( apply_filters( 'the_title', $arcresult->post_title, $arcresult->ID ) );<br /> else<br /> $text = $arcresult->ID;<br /> if ($li_value_revarse){<br /> $output .= "t<li value="" . $results_count-- . "">$before<a href='$url' title='$title_text'>$text</a>$the_date$after</li>n";<br /> } else {<br /> $output .= "t<li>$before<a href='$url' title='$title_text'>$text</a>$the_date$after</li>n";<br /> }<br /> }<br /> if ($list_type=='ul'){<br /> $output .= "</ul>n";<br /> } else {<br /> $output .= "</ol>n";<br /> }<br /> <br /> }<br /> if ( $echo )<br /> echo $output;<br /> else<br /> return $output;<br /> }<br /> ?></code>
テーマ内(ループ外)で利用します。
主なオプションの説明
1. limit 表示記事数
<code><?php wp_posts_list_ex("limit=3") ?></code>
表示例
・画像なし
・画像追加
・ぼくのブログです
2. show_date 投稿日付の表示
<code><?php wp_posts_list_ex("limit=3&show_date=1") ?></code>
表示例
・画像なし (2011年12月4日)
・画像追加 (2011年12月3日)
・ぼくのブログです (2010年12月2日)
<code>3. list_type ulとolタグの選択(デフォルトul)<br /> <?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol") ?></code>
表示例
1. 画像なし (2011年12月4日)
2. 画像追加 (2011年12月3日)
3. ぼくのブログです (2010年12月2日)
4. li_value_revarse li のvalue値 を反転
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&li_value_revarse=1") ?></code>
表示例
3. 画像なし (2011年12月4日)
2. 画像追加 (2011年12月3日)
1. ぼくのブログです (2010年12月2日)
5. show_reverse 抽出結果全体を逆順にする
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&show_reverse=1") ?></code>
表示例
1. ぼくのブログです (2010年12月2日)
2. 画像追加 (2011年12月3日)
3. 画像なし (2011年12月4日)
6.ol_type
デフォルトで数値
ol_type=i (小文字のローマ数字)
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&ol_type=i") ?></code>
表示例
i. 画像なし (2011年12月4日)
ii. 画像追加 (2011年12月3日)
iii. ぼくのブログです (2010年12月2日)
ol_type=I (大文字のローマ数字)
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&ol_type=I") ?></code>
表示例
I. 画像なし (2011年12月4日)
II. 画像追加 (2011年12月3日)
III. ぼくのブログです (2010年12月2日)
ol_type=a (小文字のアルファベット)
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&ol_type=a") ?><br /> ></code>
表示例
a. 画像なし (2011年12月4日)
b. 画像追加 (2011年12月3日)
c. ぼくのブログです (2010年12月2日)
ol_type=A (大文字のアルファベット)
<code><?php wp_posts_list_ex("limit=3&show_date=1&list_type=ol&ol_type=A") ?></code>
表示例
A. 画像なし (2011年12月4日)
B. 画像追加 (2011年12月3日)
C. ぼくのブログです (2010年12月2日)
7. ol_start liのvalueの開始番号
ol_start=3
3. 画像なし (2011年12月4日)
4. 画像追加 (2011年12月3日)
5. ぼくのブログです (2010年12月2日)
C. 画像なし (2011年12月4日)
D. 画像追加 (2011年12月3日)
E. ぼくのブログです (2010年12月2日)
8. その他のオプション
date_format_txt 日付フォーマット
echo echoするかPHP値として返すか (デフォルト echoする)
before liタグの前につく文字
after /liタグの後ろ、日付がある場合はその後ろにつく文字
2011 年 12 月 14 日 3:29 PM #3297匿名
ゲストtoemonさん。
ありがとうございます。
ここまで本格的に対応いただけるとは思いませんでした。
[例1]
3. post3(2011/12/01)
2. post2(2011/11/01)
1. post1(2011/10/01)
みたいな感じということでしょうか?
上記の通りです
>3.アクセス数のトップテンに、”人気”みたいな表示ができないか?
すみません、これはちょっと意味がわかりません。
5. post5(2011/12/03) 人気!
4. post4(2011/12/02)
3. post3(2011/12/01) 人気!
2. post2(2011/11/01)
1. post1(2011/10/01)
例えば、上記の例で、ベスト2表示であれば、post3とpost5がアクセス数トップ2表示なら、右に“人気!”のように表示したいというものです。
実際には、投稿記事数が多いので、ベスト10のものに“人気!”と付けたいのです。
教えていただいたプラグインに関しては、土日にでも確認させていただいてまたご報告いたします。
toemonのようなパワフルな開発者の存在は、ユーザーとして大変心強いです。
2011 年 12 月 14 日 5:16 PM #3298toemon
キーマスターここまで本格的に対応いただけるとは思いませんでした。
いやー、たまたま気がむいたので・・・です。
5. post5(2011/12/03) 人気!
4. post4(2011/12/02)
3. post3(2011/12/01) 人気!
2. post2(2011/11/01)
1. post1(2011/10/01)
例えば、上記の例で、ベスト2表示であれば、post3とpost5がアクセス数トップ2表示なら、右に“人気!”のように表示したいというものです。
実際には、投稿記事数が多いので、ベスト10のものに“人気!”と付けたいのです。
現在、閲覧数はXPressME 独自のテーブル$wp_prefix . ‘views’に保存されていますのでこちらを参照して in_array()でチェックする方法になります。
プラグインの仕様としては
オプションpopular_ranking
設定値はデフォルトで”(空白) 人気表示なし
設定が数値ならそれ以上のランクに(例 10 ならベスト10)「人気」を表示します。
オプションpopular_views
設定値はデフォルトで”(空白) 人気表示なし
設定が数値ならそれ以上の閲覧数があるものに(例 10 なら閲覧数10)「人気」を表示します。
オプションpopular_label
デフォルトで’Popular!’
テキストを指定すればそのテキストを表示します。
みたいな感じで考えればよろしいでしょうか?
ベスト10で10番目のに同順位(閲覧数が同じ)ものがある場合は、どうしたら良いでしょうか?
2011 年 12 月 15 日 4:34 PM #3299匿名
ゲストtoemonさん。
ありがとうございます。
みたいな感じで考えればよろしいでしょうか?
はい。
ベスト10で10番目のに同順位(閲覧数が同じ)ものがある場合は、どうしたら良いでしょうか?
XPressMEの「人気記事リスト」に合わせていただければと思います。
と、欲を出していいですか?
“人気!”の代わりに“1位!”“2位!”のように順位を表示することもできたりしますでしょうか?
土日に試すのが楽しみです。(^_^)
2011 年 12 月 16 日 4:16 AM #3300toemon
キーマスターとりあえずはここまで作成してみましたが、後はそちらの方で調整してみてください。
“人気!”の代わりに“1位!”“2位!”のように順位を表示することもできたりしますでしょうか?
これも一応、盛り込んでみました。
popular_labelオプションで好きな文字にできます。文字列中に%sがあればそこに閲覧順位が挿入されます。
仕様
人気ランキングや閲覧数などはXPressMEで独自追加したDBテーブル(wp_prefix + views)を利用していますので、WordPress単体ではこれらの機能は利用できません。
オプション
- limit 表示件数を指定
デフォルト値 空白
空白の場合は全件数を表示
- before <li>の直後に表示されるテキストを指定
デフォルト値 文字無し
- after </li>の直前に表示されるテキストを指定
デフォルト値 文字無し
- list_type リストタイプ(‘ul’または’ol’)を指定
デフォルト値 ul
- ol_type olの番号種類を指定
デフォルト値 数値で表示
設定値の種類
’1′: 数値(1,2,3)で表示
’i’: ローマ数値小文字(i,ii,iii)で表示
’I’: ローマ数値大文字(I,II,III)で表示
’a’: アルファベット小文字(a,b,c)で表示
’A’: アルファベット大文字(A,B,C)で表示
- ol_start リスト番号のスタート値
デフォルト値 1
例 ol_start 3
リスト番号が3,4,5…やC,D,E…として表示
- li_value_revarse リスト番号を反転表示(リスト番号のみ)
デフォルト値 false(偽)
true(真)にした場合
リスト番号が…3,2,1や…C,B,Aとして逆順に表示される。
- show_revarse 検索結果を反転して表示
デフォルト値 false(偽)
- date_format_txt 日付フォーマットを指定
デフォルト値 空白(WordPressの日付フォーマット指定に従う)
- popular_ranking/popular_min_views 人気ランキングの表示条件
popular_ranking 閲覧数による人気ランキングを表示する数(第何位まで)(閲覧数はXPressME のviewsテーブルを使用)
デフォルト値 空白
popular_min_views 人気ランキングの最低閲覧数
デフォルト値 空白
設定例
popular_ranking指定なしpopular_min_view指定なしの場合、
人気ランキングは表示されません。
popular_ranking=10 popular_min_view=15の場合、
閲覧数が15件以上のものの中から上位10件を人気ランキングとして表示します。
popular_ranking=10 popular_min_view=指定なしの場合、
閲覧数の多いものから上位10件を人気ランキングとして表示します。
popular_ranking=指定なし popular_min_view=15の場合、
閲覧数が15件以上のものを人気ランキングとして表示します。
- popular_label 人気ランキングの表示文字列を指定
デフォルト値 ’Popular No.%s!’ %s部にはランキング番号が入ります。
指定文字列に%sがない場合はランキング番号が表示されません。
- view_label 閲覧数表示文字列を指定します。
デフォルト値 ’views:%s’,%s部には閲覧数が入ります。
指定文字列に%sがない場合閲覧数は表示されません。
- add_text_format 日付、閲覧数、人気ランキングの表示フォーマットを指定します。
デフォルト値 ’ ([date]) ([views_num]) [popular] ‘
[date]部には日付が入ります
[views_num]には閲覧数(view_labelで設定したもの)が入ります。
[popular]には人気文字(popular_label)で設定したもの)が入ります。
設定例
’ ([date])<b><font color=”red”>[popular]</b> ‘
括弧付きの日付に続き人気文字列(赤太字)を表示します。
’ <b><font color=”red”>[popular]</b>([date]) ‘
上記例の日付と人気文字列の入れ替え
- echo echoを行うかを設定します。
デフォルト値 true
true 処理結果をechoします
false 処理結果をPHP値として返します
使用例(オプションの設定例)
WordPressテーマファイルのループ外に書き込みます
オプションを配列として渡す場合
<code><?php<br /> if (function_exists(wp_posts_list_ex)){<br /> $arg=array(<br /> 'limit' => 4,<br /> 'list_type' => 'ol',<br /> 'ol_type' => 'A',<br /> 'li_value_revarse' => true,<br /> 'popular_ranking' => 5,<br /> 'popular_label' => '人気 第%s位!'<br /> );<br /> wp_posts_list_ex($arg);<br /> }<br /> ?></code>
オプションを文字列として渡す場合
<code><?php<br /> if (function_exists(wp_posts_list_ex)){<br /> wp_posts_list_ex("limit=4&list_type=ol&li_value_revarse=1&popular_ranking=5&popular_label=人気 第%s位!");<br /> }<br /> ?></code>
として利用します。
注意 文字列としてのオプション指定の場合trueやfalseは使えません1または0として指定してください。
プラグインのソース
このソースについてはサポートを行うつもりはありませんので、著作権を放棄します。そのため、プラグインへの署名は行っておりません。
プラグインインストール方法
以下の内容を含んだ’wp_posts_list_ex.php’というファイルを
wp-content/plugins/直下、あるいは
wp-content/plugins/wp_posts_list_ex/ディレクトりに作成設置してください。
設置後、WordPressプラグイン管理より有効にすることでプラグインが有効になります。
<code><?php<br /> /*<br /> Plugin Name: WP Posts List Ex for XPressME<br /> Plugin URI: http://exsample.com<br /> Description: WP Posts List Ex (custom function)<br /> Author: Foo<br /> Version: 1.0<br /> Author URI: http://exsample.com<br /> */<br /> <br /> function wp_posts_list_ex($args = '') {<br /> global $wpdb, $wp_locale,$blog_id;<br /> <br /> if (empty($blog_id)) $blog_id =1;<br /> <br /> $defaults = array(<br /> 'limit' => '',<br /> 'before' => '',<br /> 'after' => '',<br /> 'list_type' => 'ul', //Set value are 'ul' or 'ol'.<br /> 'ol_type' => '', //Set value are '1','a','A','i' or 'I'. Only enable if the OL tag is selectedvalue<br /> 'ol_start' => '',<br /> 'li_value_revarse' => false, //Only enable if the OL tag is selected<br /> 'show_reverse' => false,<br /> 'date_format_txt' => '',<br /> 'popular_ranking' => '',<br /> 'popular_min_views' => '',<br /> 'popular_label' => 'Popular No.%s!',<br /> 'view_label' => 'views:%s',<br /> 'add_text_format' => ' ([date]) ([views_num]) [popular] ',<br /> 'echo' => true<br /> );<br /> <br /> $r = wp_parse_args( $args, $defaults );<br /> extract( $r, EXTR_SKIP );<br /> <br /> if ( '' != $limit ) {<br /> $limit = absint($limit);<br /> $limit = ' LIMIT '.$limit;<br /> }<br /> $views_table = $wpdb->prefix . 'views';<br /> <br /> if ($wpdb->get_var("show tables like '" . $views_table . "'") == $views_table){<br /> $views_table_exists = true;<br /> } else {<br /> $views_table_exists = false;<br /> }<br /> <br /> //filters<br /> $where = apply_filters( 'wp_posts_list_ex_where', "WHERE post_type = 'post' AND post_status = 'publish' AND post_date != '0000-00-00 00:00:00'", $r );<br /> $join = apply_filters( 'wp_posts_list_ex_join', '', $r );<br /> <br /> $orderby = 'post_date DESC ';<br /> if ($views_table_exists){<br /> $query = "SELECT * FROM $wpdb->posts LEFT JOIN $views_table ON($views_table.blog_id =$blog_id AND $wpdb->posts.ID = $views_table.post_id) $join $where ORDER BY $orderby $limit";<br /> } else {<br /> $query = "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $limit";<br /> }<br /> $key = md5($query);<br /> $cache = wp_cache_get( 'wp_posts_list_ex' , 'general');<br /> if ( !isset( $cache[ $key ] ) ) {<br /> $arcresults = $wpdb->get_results($query);<br /> $cache[ $key ] = $arcresults;<br /> wp_cache_set( 'wp_posts_list_ex', $cache, 'general' );<br /> } else {<br /> $arcresults = $cache[ $key ];<br /> }<br /> <br /> $output = '';<br /> if ( $arcresults ) {<br /> $results_count = count($arcresults);<br /> // Reverse an array<br /> if($show_reverse) {<br /> $arcresults = array_reverse($arcresults);<br /> }<br /> //Setting the list tag<br /> if ($list_type=='ul'){<br /> $befor_tag = "<ul>n";<br /> $after_tag = "</ul>n";<br /> } else {<br /> //ol tag list-style-type setting<br /> switch($ol_type){<br /> case '1':<br /> $style = "style='list-style-type: decimal'";<br /> break;<br /> case 'a':<br /> $style = "style='list-style-type: lower-alpha'";<br /> break;<br /> case 'A':<br /> $style = "style='list-style-type: upper-alpha'";<br /> break;<br /> case 'i':<br /> $style = "style='list-style-type: lower-roman'";<br /> break;<br /> case 'I':<br /> $style = "style='list-style-type: upper-roman'";<br /> break;<br /> default:<br /> $style ='';<br /> }<br /> //ol tag start setting<br /> if (!empty($ol_start) && is_numeric($ol_start)){<br /> $start = 'start='. $ol_start;<br /> } else {<br /> $start = '';<br /> }<br /> <br /> $befor_tag = "<ol $start $style>n";<br /> $after_tag = "</ol>n";<br /> }<br /> <br /> $output .= $befor_tag;<br /> <br /> // Popular Post ID into an array<br /> if($views_table_exists && (is_numeric($popular_ranking) || is_numeric($popular_min_views))){<br /> <br /> //Setting the Number of popular View<br /> if ( is_numeric($popular_ranking) ) {<br /> $popular_limit = absint($popular_ranking);<br /> $popular_limit = ' LIMIT '.$popular_ranking;<br /> } else {<br /> $popular_limit = '';<br /> }<br /> //Setting the minimum number of popular<br /> if(is_numeric($popular_min_views)){<br /> $popular_where = "WHERE blog_id =$blog_id AND post_views >= $popular_min_views";<br /> } else {<br /> $popular_where = "WHERE blog_id =$blog_id";<br /> }<br /> //Extraction of popular posts<br /> $popular_query = "SELECT * FROM $views_table $popular_where ORDER BY post_views DESC $popular_limit";<br /> $populars = $wpdb->get_results($popular_query);<br /> //Popular Post ID into an array<br /> $popular_array= array();<br /> foreach ($populars as $popular) {<br /> $popular_array[] = $popular->post_id;<br /> }<br /> }<br /> foreach ( (array) $arcresults as $arcresult ) {<br /> $url = get_permalink( $arcresult );<br /> // post date<br /> if ( '' == $date_format_txt ){<br /> $the_date = mysql2date(get_option('date_format'), $arcresult->post_date);<br /> } else {<br /> $the_date = mysql2date($date_format_txt, $arcresult->post_date);<br /> }<br /> if ( $arcresult->post_title )<br /> $title_text = strip_tags( apply_filters( 'the_title', $arcresult->post_title, $arcresult->ID ) );<br /> else<br /> $title_text = $arcresult->ID;<br /> <br /> // popular & views num<br /> $popular_text = '';<br /> $views_num = '';<br /> if($views_table_exists){<br /> $lank_order = array_search($arcresult->ID,$popular_array);<br /> if($lank_order !== false){<br /> $order_num = $lank_order +1;<br /> $popular_text = sprintf($popular_label,$order_num) ;<br /> }<br /> $views_num = sprintf($view_label,$arcresult->post_views) ;<br /> }<br /> <br /> $add_text = preg_replace('/[date]/', $the_date, $add_text_format);<br /> $add_text = preg_replace('/[views_num]/', $views_num, $add_text);<br /> $add_text = preg_replace('/[popular]/', $popular_text, $add_text);<br /> <br /> if ($li_value_revarse){<br /> $li_attr = ' value="' . $results_count-- . '"';<br /> } else {<br /> $li_attr = '';<br /> }<br /> $output .= "t<li{$li_attr}>{$before}<a href='$url' title='{$title_text}'>{$title_text}</a>{$add_text}{$after}</li>n";<br /> <br /> }<br /> $output .= $after_tag;<br /> }<br /> if ( $echo )<br /> echo $output;<br /> else<br /> return $output;<br /> }<br /> ?></code>
2011 年 12 月 17 日 6:11 AM #3301匿名
ゲストtoemonさん。
ありがとうございます。
プラグインの名前は
WP_Posts_List_Ex_for_XPressME.php
として、
wp-content/plugins
直下に置きました。
「Wordpress管理」の「プラグイン」から「WP Posts List Ex for XPressME」をインストール。
テーマに以下を追加。
footer.php
<code><?php<br /> if (function_exists(wp_posts_list_ex)){<br /> $arg=array(<br /> 'limit' => 200,<br /> 'list_type' => 'ol',<br /> 'ol_type' => '1',<br /> 'li_value_revarse' => true,<br /> 'popular_ranking' => 10,<br /> 'popular_label' => "<span class="popular">人気 第%s位!</span>",<br /> 'add_text_format' => ' ([date]) [popular] ',<br /> );<br /> wp_posts_list_ex($arg);<br /> }<br /> ?></code>
結果、大成功です!!
プラグインのソース
このソースについてはサポートを行うつもりはありませんので、著作権を放棄します。そのため、プラグインへの署名は行っておりません。
そうなのですか・・・。
私にとっては貴重なプラグインですから、是非XPressMEに同梱いただきたかったですが、toemonさんにとってはいつでも気が向いたときに作り直せる程度のものなのでしょうね(^_^;)
なにはともあれ、ここまで対応いただき、感謝!感謝!でございます。
成功のご報告とお礼を申し上げさせていただきます。
本当にありがとうございました。
これからもよろしくお願い致します。
2011 年 12 月 17 日 1:52 PM #3302toemon
キーマスターそうなのですか・・・。
私にとっては貴重なプラグインですから、是非XPressMEに同梱いただきたかったですが、toemonさんにとってはいつでも気が向いたときに作り直せる程度のものなのでしょうね(^_^;)
誤解を与えてしまったのなら申し訳ないです、
今回、プラグインのソースを書かせていただいたのは、
heijiさんがトピックのはじめで、WordPressのソースを追いかけて、
自分なりにハックするなりの解決策を見いだそうとするだけの努力をなさっていらっしゃったからです。
ですから、heijiさんのやりたいこともある程度わかりましたし、
wp-includesとかをいじっているので、XPressMEというよりは、wordpress側の機能拡張になるのかもしれませんが、XPressMEの機能拡張で、ブロックや、記事一覧ページとかを生成できたらよいなということで、“要望”ということで投稿させていただきます。
やハックという方向ではなく、プラグインというやり方も、ありますよ。と、ある程度の参考例を示させていただくことにより
今後、自分なりに改良を加えたり、他のプラグインにも挑戦されたり、それだけの熱意がある方だなと思ったからです。
そんな意味もあり、heijiさんのプラグインとして成長させてやってくださいという願いを込め、プラグインへの署名を放棄したわけです。
今後も何かあれば、お気軽に問い合わせください。出来る限りの回答をさせていただきます。(自分自身の勉強のきっかけになりますので)
2011 年 12 月 17 日 3:38 PM #3303匿名
ゲストtoemonさん。
お返事ありがとうございます。
そんな意味もあり、heijiさんのプラグインとして成長させてやってくださいという願いを込め、プラグインへの署名を放棄したわけです。
趣旨理解しました。
私が改造してフィードバックできるようにご配慮いただいたのですね。
今後も何かあれば、お気軽に問い合わせください。出来る限りの回答をさせていただきます。(自分自身の勉強のきっかけになりますので)
私も大変勉強になりました。プラグインというものがあるのは知っていましたが、どうやって使うものかも知らなかったくらいですから・・・。
こちらこそ、これからもよろしくお願いします。温かいお言葉に感謝いたします。
- limit 表示件数を指定
-
投稿者投稿
- フォーラム「使い方全般」には新規投稿および返信を追加できません。