サイドバーに掲載した「投稿」でのリンク記事の並び替え
-
これまで「ページ」による記事作成をしてきましたが、PING送信ができなかったりその他問題を感じ、今後は「投稿」で記事を作成しようとしております。概ね問題がなくなってきたのですが、「投稿」では記事の表示順が「ページ」のように設定する欄が無いようです。
「ページ」で作成した記事ならば表示順を設定できるので、あとから作成した記事であっても、サイドバーに表示される記事リンクの並び順について、
「今作成している記事は、3番目の記事と4番目の記事の間に入れたい内容だ」
と思ったときに表示順を番号で設定できるので、三番目の記事の表示順が3で、四番目の表示順が4であっても、四番目の記事を編集して5にして、新たに追加する記事の表示順を4にする、
などということができます。「投稿」でこれをおこなうにはどこをいじればよいでしょうか。
-
そもそも「なんとか順」を自動生成したいわけではないようなので、一番確実なのはサイドバーに表示するリストを直接書き込むことなのでしょうが、テーマを毎回修正だと手間だと言うのであれば、カスタムフィールドに「重要度」的な項目を作って数字を入れていくなんて方法はいかがでしょう。
ページで作って表示順を修正するには該当ページを全て開いてひとつずつ番号を修正していかなくてはいけないわけですから、必要な手間もやってることも同じだと思うんですよね。
まあ、あとはサイドバーにカスタムフィールドの値を読み込んで並び替えを行うソースを記述しなければならないということですが・・・ファイトです!;)
kvexさま、shokun0803さま、誠に有難う御座います。感謝いたします。
公開日をいじるというのは確かに手っ取り早いかもですね。
そもそも「なんとか順」を自動生成したいわけではないようなので、
はい、まさにまさにそのご理解の通りです。
一番確実なのはサイドバーに表示するリストを直接書き込むことなのでしょうが、テーマを毎回修正だと手間だと言うのであれば、カスタムフィールドに「重要度」的な項目を作って数字を入れていくなんて方法はいかがでしょう。
ページで作って表示順を修正するには該当ページを全て開いてひとつずつ番号を修正していかなくてはいけないわけですから、必要な手間もやってることも同じだと思うんですよね。カスタムフィールドというのはなるほどカスタムというわけなのでそういう使い道もアリなのですね。
はい、ページでも番号修正するのですから手間は変わりません。その通りだと思います。まあ、あとはサイドバーにカスタムフィールドの値を読み込んで並び替えを行うソースを記述しなければならないということですが・・・ファイトです!;)
励まし有難う御座います!
が、そのようなプログラミングソースを記述しないといけないのですね。。。
サイドバーの投稿記事の並び順なんて簡単に管理画面で変えられる部類のものだと思っていたのですが、意外とWordPressちゃん、できないんですね。。。プログラミングかぁ・・・ここは知識ないからなぁ・・・日付いじるのは更新日時を嘘にしてしまうし、引き続き調べないといけないと感じている現時点でございます。
有難う御座いました。たとえば、タイトルに数字を入れれば簡単ですが、それは避けたいんでしょうね。
投稿のタイトルを
1.はじめに
2.ご紹介などとあったときに新規に
2.会社概要
と投稿して、以前の
2.ご紹介
を
3.ご紹介に変える・・・みたいな。
めんどうですね。プラグインありましたよ
http://wordpress.org/extend/plugins/wp-smart-sort/試したらちゃんと動きました。
カスタムフィールドの1つをソートキーにしてあげれば良いと思います。
たとえば
sort
というカスタムフィールドを用意して、10,20,30 などと入れておいて、間に入れたいときに12,25などを使うとか。kvexさま、プラグイン情報、有難う御座います!
早速入れてみてテストしていたところ、昨日も起こったとんでもない現象の調査でテストが完了できない状況です。とんでもない現象とは、WordPressで制作した日本語ドメインサイト全てにおいて503エラーのページが表示されてサイトにアクセスできなくなってしまったんです。WordPressのPHPファイルとかが原因の場合もあるようなので改めて別に質問させていただきます。こんにちは。以前回答したトピックにちょうど良さそうなものがあったのでご紹介します。
http://ja.forums.wordpress.org/topic/2520
WP2.6.5 であれば動作します(WP2.7以降は不可)。
ただ今思うと若干不親切なプラグインになっていますので、以下の修正版をお試し下さい。<?php /* Plugin Name: Menu Order Meta Box for Posts Plugin URI: http://ja.forums.wordpress.org/topic/275 Description: 投稿フォームに並び順の入力欄を追加するプラグイン。 Version: 0.1.20090929 Author: mizube */ if ( version_compare( $wp_version, '2.6.5', '<=' ) ) { function menu_order_meta_box() { global $post; ?> <p><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo $post->menu_order ?>" /></p> <?php } function add_menu_order_meta_box() { add_meta_box( 'menuorderdiv', __('Order'), 'menu_order_meta_box', 'post', 'advanced', 'core' ); } function add_menu_order_column_header( $columns ) { $columns['menu_order'] = __('Order'); return $columns; } function add_menu_order_column_data( $column_name ) { if ( $column_name != 'menu_order' ) return; global $post; echo $post->menu_order; } add_action( 'do_meta_boxes', 'add_menu_order_meta_box' ); add_filter( 'manage_posts_columns', 'add_menu_order_column_header' ); add_action( 'manage_posts_custom_column', 'add_menu_order_column_data' ); } ?>
あとは、 query_posts() を使って orderby 引数を menu_order,post_date などとすれば完了です。
# 実は 2.7 以降対応版も準備中だったのですが、クイック編集出来るようにするところで現在つまずいています:P
mizubeさま、プラグインソースのご提供までいただいて助かります。すごすぎです。
テストしてみましたところ、以下のエラーが出て有効化できませんでした。
重大なエラーを引き起こしたのでプラグインの有効化はできませんでした。
Parse error: syntax error, unexpected ‘@’ in /home/xn--aaaaaaaaa.jp/wp-content/plugins/menu-order-meta-box-for-posts(WPforum-mr.mizube-kaizoutype)/menu_order_meta_box_for_posts.php on line 10記述いただいたソースを秀丸エディターで開いてペーストし、ファイル名をつけて.phpファイルとして保存。アップロード後、有効化をおこないました。
10行目といいますと、WordPressのバージョン記述欄のようですが、
wp_version, ‘2.6.5
と、当方のバージョンを嬉しくも書いていただいており、何故これがエラーなのか。。。あとは、 query_posts() を使って orderby 引数を menu_order,post_date などとすれば完了です。
ここは当方の現時点の脳内書庫には載っていなかった内容でして(汗;)ネットで調べてみます。
取り急ぎ有難う御座いました。うわぁ、すみません。コードを貼り付ける際に全角スペースを使ってしまっていました……。←エラー
しかも、 query_posts() の orderby 引数の仕様について間違った情報までお伝えしてしまいました。複数指定は出来るのですが、個別に order を設定することが出来ない点、 post_date ではなく date が正しい引数値である点、ご了解下さい。無駄な手間を取らせてしまい大変失礼しました。
以下に上記の修正と、ページと検索以外のクエリで ORDER BY 句に menu_order ASC を強制的に追加するフィルタを足したバージョンを貼り付けますので、動作を確認してみてください。
<?php /* Plugin Name: Menu Order Meta Box for Posts Plugin URI: http://ja.forums.wordpress.org/topic/2520 Description: 投稿フォームに並び順の入力欄を追加するプラグイン。 Version: 0.1.20090930 Author: mizube */ if ( version_compare( $wp_version, '2.6.5', '<=' ) > 0 ) { function menu_order_meta_box() { global $post; ?> <p><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo $post->menu_order ?>" /></p> <?php } function add_menu_order_meta_box() { add_meta_box( 'menuorderdiv', __('Order'), 'menu_order_meta_box', 'post', 'advanced', 'core' ); } function add_menu_order_column_header( $columns ) { $columns['menu_order'] = __('Order'); return $columns; } function add_menu_order_column_data( $column_name ) { if ( $column_name != 'menu_order' ) return; global $post; echo $post->menu_order; } function add_menu_order_asc_query( $orderby='' ) { if ( !is_page() && !is_search() && !preg_match( '/menu_order/', $orderby ) ) { $orderby = 'menu_order ASC,' . $orderby; } return $orderby; } add_action( 'do_meta_boxes', 'add_menu_order_meta_box' ); add_filter( 'manage_posts_columns', 'add_menu_order_column_header' ); add_action( 'manage_posts_custom_column', 'add_menu_order_column_data' ); add_filter( 'posts_orderby', 'add_menu_order_asc_query' ); } ?>
これで特に query_posts() を使用しなくてもいいはずです。
mizubeさま、とんでもございません、たいした手間ではありませんので。
それで、二回目のソースでやってみましたところ、ばっちりでした!!(ヤッタ!)
どう出てくれるのかな?と思いながら投稿した記事編集画面を開いてみると、なんと、「順序」という項目自体が出現してます!
こういうことなのですね。何と楽なことか・・・。
プラグイン自体を加工してご提供くださり本当に感謝申し上げます。ガンガン使いそうですこれは。kvexさま、カスタムフィールドの分もいけてます!(ヤッタ!)ありがとうございます。
プラグインをインストールして試験までしていただいてホントに感謝申し上げます。
ありがとうございました。こちらも使えますね!jiluro さん
既にトピックが解決済になっているので、お読みになるか分かりませんが……。
今更気付いたのですが(というか、途中で私自身の目的がすり替わってしまっていたのですが)、この順序については、サイドバーの並び順だけで良かったんですね。このプラグインを有効化すると、サイドバー以外でも投稿の並び順が強制的に変更されてしまいます!そこで、表示件数を設定できる、並び順で並ぶ投稿リストのウィジェットを作り、このプラグインの機能を拡張してみようかなと思ったのですが、必要でしょうか? 投稿をページ代わりに使用する、という目的の上では (どういう使われ方なのかイマイチ分かっていません) 特に問題はないのかもしれませんが。
mizubeさま、はい、読んでおりました^^
素晴らし過ぎます・・・。私の心中が読まれているのかと思いました。
今後、投稿リストの中の重要な一部についてはフッターにも入れるかな、と思っていたりしていました。
mizubeさまがご無理が無いのでしたら是非お願いします。投稿をページ代わりに使用する、という目的の上では (どういう使われ方なのかイマイチ分かっていません) 特に問題はないのかもしれませんが。
一番したい姿は、「投稿」でも「ページ」でもナンでも良いのですが、サイドバーを以下の姿にしたいです。
※この掲示板、インデントがうまくいかなかったので、子リンクのインデントの箇所を(イ)と書いておきます。————————————————————
●販売品A
(イ)・販売品Aの特徴
(イ)・色んな使い道
(イ)・価格について●販売品B
(イ)・販売品Bの特徴
(イ)・色んな使い道
(イ)・価格について●販売品C
(イ)・販売品Cの特徴
(イ)・色んな使い道
(イ)・価格について●購入方法について
(イ)・決済の種類
(イ)・配送・送料について
(イ)・購入ページ
————————————————————そして、「購入方法について」などのカテゴリー的リストの箇所ですが、「購入方法について」のWebページ自体は無いものとしてリンクもしないのが良いです。
このカテゴリー的リストの下の「(イ)・決済の種類」らが実際に存在するWebページです。このようにしたいのですが、「ページ」でつくってはPINGが飛ばないし、テンプレートのphpをつくらないといけないし、サイドバーに乗せたくないヘッダー横並びのGlobalNavigationの「会社概要」などもサイドバーに載ってしまうし、かといって「投稿」で作成すると、カテゴリー名はリンクさせたくないのに勝手にリンクがされて最新の子ページがリンク先になっちゃうし、表示順変えれないし(mizubeさまのお陰でこれは解決!)と、ブログでなく通常の企業サイトにWordPressを変貌させるのにはものすごく手間・知識・技術がかかるなぁと思っているところでした。
- トピック「サイドバーに掲載した「投稿」でのリンク記事の並び替え」には新たに返信することはできません。