pluto1234
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: そのカテゴリーに属する投稿一覧をサイドバーに表示する時の並び順のコ投稿の順番を指定するプラグインです。両プラグインとも、ポストの menu_order フィールド(固定ページの順番を指定するフィールド)を使っています。
1) プラグイン postMash(Filtered)
プラグインを有効にして、[投稿-postmash] で順番を Drag&Drop で決定します。
カテゴリーページ、サイドバーなどで、投稿が指定順に表示されます。
ここは、日付順で、ここは指定順番で、ということはできません。2) プラグイン CMS Tree Page View
固定ページとカスタム投稿タイプにしか対応していませんが、
/plugins/cms-tree-page-view/index.php で「continue」(1ヶ所)を見つけこれをコメントにしてやると、投稿でも使えるようになります。どちらかというと、NEWS(投稿)は日付順、商品(カスタム投稿タイプ)は指定順で表示したいというようなときに便利です。
プラグインを有効にして、[投稿-投稿 Tree View] で順番を Drag&Drop で決定します。
以下テンプレートのコード
functions.php で <?php function cms_view_orderPosts($orderBy) { global $wpdb; $orderBy = "{$wpdb->posts}.menu_order ASC"; return($orderBy); } ?>を定義して、順番指定が必要なところで、
<?php add_filter('posts_orderby', 'cms_view_orderPosts'); query_posts($query_string); remove_filter('posts_orderby', 'cms_view_orderPosts'); ?> とか、 <?php add_filter('posts_orderby', 'cms_view_orderPosts'); query_posts('cat=10&posts_per_page=-1'); remove_filter('posts_orderby', 'cms_view_orderPosts'); ?> にします。直接SQLを使って投稿を抽出しているプラグイン(サイトマップなど)は、プラグインを直接修正するしかありません。
フォーラム: 使い方全般
返信が含まれるトピック: キャッチフレーズでの改行こういう方法もあると思いますが、キャッチフレーズを頻繁に更新するのでなければ、テンプレートに埋め込んだ方が手っ取り早いと思います。
フォーラム: 使い方全般
返信が含まれるトピック: 固定ページにおけるアイキャッチ画像の絞り込み表示アイキャッチ(中サイズ)は、孫ページへリンクしています。
<?php $children = get_pages('parent=AのID&hierarchical=0'); foreach ($children as $child) { ?> <h3><?php echo esc_html($child->post_title);?></h3> <?php $grandchildren = get_pages('parent='.$child->ID.'&hierarchical=0'); foreach ($grandchildren as $grandchild) { $eye_catch = get_post_thumbnail_id($grandchild->ID); ?> <div class="eye-catch"><a href="<?php echo esc_url($grandchild->guid);?>"><?php echo wp_get_attachment_image($eye_catch,'medium');?></a></div> <?php } } ?>フォーラム: 使い方全般
返信が含まれるトピック: フロントページにカテゴリーの階層ごとに記事一覧を表示したい再び修正
function pinpon($the_cats,$cat_obj) { $n = count($the_cats); if ($n==1) { if ($cat_obj->cat_ID==$the_cats[0]->cat_ID) { $rtn = true; } else { $rtn = false; } } else { if ($cat_obj->category_parent!=0) { $rtn = true; for ($i = 0; $i <$n ; $i++) { if ($cat_obj->cat_ID!=$the_cats[$i]->cat_ID) { if (!(cat_is_ancestor_of($the_cats[$i]->cat_ID,$cat_obj->cat_ID))) { $rtn = false; break; } } } } else { $rtn = false; } } return $rtn; }$myposts = get_posts('numberposts=-1&orderby=menu_order&order=ASC&cat='.$category->cat_ID); ▽ $myposts = get_posts('numberposts=-1&order=ASC&cat='.$category->cat_ID); (&orderby=menu_order を取る)—————————————–
記事1 親カテゴリー1
記事2 親カテゴリー1
記事3 親カテゴリー1,子カテゴリー1
記事4 親カテゴリー1,子カテゴリー2
記事5 子カテゴリー2(親カテゴリー1なし)
記事6 親カテゴリー2
記事7 親カテゴリー2,子カテゴリー3
—————————————–
とすると、以下のようになるはずです。
http://powercms.sitemix.jp/カテゴリーや記事の順番指定は適当に変更してください。
もしかして、私が勘違いしていたのかもしれません。カテゴリーが必ず一つというのなら
—————————————–
記事1 親カテゴリー1
記事2 親カテゴリー1
記事3 子カテゴリー1
記事4 子カテゴリー2
記事5 子カテゴリー2
記事6 親カテゴリー2
記事7 子カテゴリー3
—————————————–
無条件に正しく表示することが出来ます。ただし、こうするとパンクズナビがネストして表示できないような気がします。フォーラム: 使い方全般
返信が含まれるトピック: フロントページにカテゴリーの階層ごとに記事一覧を表示したいまずは、修正から、
1) function disp_child($catid) { の上の方のelse節で、hierarchical=0 を追加してください。
2) query_posts() はえらく遅いので、get_posts() に変更してください。function disp_child($catid) { if ($catid==0) { $categories = get_categories('parent=0&orderby=name&order=DESC'); } else { $categories = get_categories('hierarchical=0&orderby=name&order=DESC&child_of='.$catid); } if (!(empty($categories))) { foreach($categories as $category) : ?> <h3><?php echo esc_html($category->cat_name); ?></h3> <ul> <?php $myposts = get_posts('numberposts=-1&orderby=menu_order&order=ASC&cat='.$category->cat_ID); foreach ($myposts as $p) { $cat_array = get_the_category($p->ID); if (pinpon($cat_array,$category)) { ?> <li><a href="<?php echo esc_url($p->guid); ?>"><?php echo esc_html($p->post_title); ?></a></li> <?php } } disp_child($category->cat_ID); ?> </ul> <?php } } } ?> ■ フロントページ <?php if(is_home() && !is_paged()): ?> <?php disp_child(0); // 不要 wp_reset_query(); ?> <?php endif; ?>カテゴリーは、親子関係にある場合にのみ「複数のチェック可」という前提です。
↓
直径の親子関係以外のものが含まれる場合は×。[すべて直径の親子関係の範囲内はOK]
親子孫
■
■
■
□
□
—- or ——-
親子孫
□
□
□
■
■
—- or ——-
親子孫
■
□
■
□
□[直径以外が含まれる場合はNG]
親子孫
■
□
□
■
□
—- or ——-
親子孫
■
□
■
■
□
□
—- or ——-
□
□
■
□
■
□<例>
■記事にチェックしても良い組み合わせ
[親カテゴリー1]
[子カテゴリー1]
[子カテゴリー2]
[親カテゴリー1,子カテゴリー1]
[親カテゴリー1,子カテゴリー2]
[親カテゴリー2]
[子カテゴリー3]
[親カテゴリー2,子カテゴリー3]
etc■記事にチェックしてはいけない組み合わせ
[親カテゴリー1,親カテゴリー2]
親カテゴリー1,親カテゴリー2 が親子関係ではない。
[親カテゴリー1,子カテゴリー1,親カテゴリー2]
親カテゴリー1,親カテゴリー2 が親子関係ではない。
[親カテゴリー1,子カテゴリー1,子カテゴリー2]
子カテゴリー1,子カテゴリー2 が親子関係ではない。
[親カテゴリー1,親カテゴリー2,子カテゴリー3]
親カテゴリー1,親カテゴリー2 が親子関係ではない。
[親カテゴリー2,子カテゴリー1]
親カテゴリー2,子カテゴリー1 が親子関係ではない。
etc>子カテゴリーにある記事が親カテゴリーにもリストアップされます。
あら?
[親カテゴリー1]
・記事3
となるように、pinpon() ではじいているはずなのですが??フォーラム: 使い方全般
返信が含まれるトピック: フロントページにカテゴリーの階層ごとに記事一覧を表示したいカテゴリーは、親子関係にある場合にのみ「複数のチェック可」という前提です。
■
■
■
□
□
□
はいいけれども、
■
■
■
■
□
□
はダメです。■ functions.php <?php function pinpon($the_cats,$cat_obj) { $rtn = false; $n = count($the_cats); if ($n==1) { $rtn = true; } else { if ($cat_obj->category_parent!=0) { $rtn = true; for ($i = 0; $i <$n ; $i++) { if ($cat_obj->cat_ID!=$the_cats[$i]->cat_ID) { if (!(cat_is_ancestor_of($the_cats[$i]->cat_ID,$cat_obj->cat_ID))) { $rtn = false; break; } } } } else { $rtn = false; } } return $rtn; } function disp_child($catid) { if ($catid==0) { $categories = get_categories('parent=0&orderby=name&order=DESC'); } else { $categories = get_categories('orderby=name&order=DESC&child_of='.$catid); } if (!(empty($categories))) { foreach($categories as $category) : ?> <h3><?php echo esc_html($category->cat_name); ?></h3> <ul> <?php query_posts('posts_per_page=-1&cat='.$category->cat_ID); if (have_posts()) : while (have_posts()) : the_post(); $cat_array = get_the_category(); if (pinpon($cat_array,$category)) : ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endif; ?> <?php endwhile; endif; ?> <?php disp_child($category->cat_ID);?> </ul> <?php endforeach; } } ?> ■ フロントページ <?php if(is_home() && !is_paged()): ?> <?php disp_child(0); wp_reset_query(); ?> <?php endif; ?>カテゴリーのネストが深かったり、記事が多い場合は遅いかもしれません。また、真剣にテストはしていないので、どこかにシクジリがあるかもしれません。
フォーラム: 使い方全般
返信が含まれるトピック: 簡単なフォームデータの受け渡しについて質問ですWordPress では、フォームの name に使ってはいけない名前が幾つかあります。
‘day’ もその一つです。wp-include/classes.php の 29行目くらい
$public_query_vars = array(‘使ってはいけない名前’);フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿の抽出で親ページだけをリスト表示したいフォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿の抽出で親ページだけをリスト表示したいフォーラム: 使い方全般
返信が含まれるトピック: 独自テーブルのデータから、動的に投稿を作成する方法について結論から言うと、WordPress で作るのはやめたほうがいいです。
そもそも、なぜ WordPress にしようと思ったのですか?もし、私がやるとすれば(大雑把で、たぶんご批判もあると思いますが)、
1) 今のシステムを強化する。
2) PHP フレームワークで作り直す。
3) Drupal で作り直す。
4) WordPress の Plugin pods を使う。
5) wp_store にデータを保存し、自前の更新処理を追加する。
6) 今のデータを post,category,customfield に変換してから取り込む。
の順番にします。4万件のデータを扱うとすると、性能も考慮しなければなりません。
http://dev.podscms.org/2010/10/15/pods-data-storage-vs-cpt-custom-fields-mysql-testing/
pods の性能 ≒ wp_store の性能でしょう。フォーラム: 使い方全般
返信が含まれるトピック: 固定ページでサイドバーのカテゴリーが表示されない固定ページには、カテゴリーが付かないので(通常は付かない)カテゴリーは表示されません。
もしかしてやりたいことは、
wp_list_categories()
なのでは?the_category()は、the_ がついていることからもわかるように、普通はループの中(the_post() の後)で使います。
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿で作成した親ページに、属する子ページのタイトルと本文を明らかにおかしそうなのは、
post_type=page
↓
post_type=basho(定義したカスタム投稿タイプ名)この修正だけで動くかどうかはわかりません。
フォーラム: 使い方全般
返信が含まれるトピック: 特定の親ページに属する小ページの情報参照のしかた色々jim912さんのコードを見てなるほどと思いましたが、parent を指定した get_pages() に問題があるのか確かにうまくいきません。
yumebunsekiさんの方法だと、ページB-Bの下に B-B-1,B-B-2,B-B-3 のようなページがあるとうまくいきません。そういうページは作らないなら良いのですが・・。
get_pages() は使わずに、
function flatten_page_list($exclude = '') { global $wpdb; global $post; $pagelist = $wpdb->get_results( " SELECT * FROM $wpdb->posts WHERE post_type = 'page' AND post_parent = $post->post_parent AND post_status = 'publish' ORDER BY menu_order; " ); //$pagelist = get_pages($args); $mypages = array(); :のようにすると一般的にうまくいくようです。
(jim912さんの方式をget_pages()を使わずにやっただけです)フォーラム: 使い方全般
返信が含まれるトピック: 特定の親ページに属する小ページの情報参照のしかた色々Plugin の説明に
allowing Drupal-like book navigation.
とあったので、これだと思いましたが、子供の端っこで親へのリンクが付いてしまうのは、Drupal の Book モジュールとは違うようですね。プラグインを適当にいじれば(たぶん、どっかに1,2行条件を加えれば)、B-Aのprev,B-Eのnextのリンクを表示させないようにすることはできると思います。
フォーラム: 使い方全般
返信が含まれるトピック: 特定の親ページに属する小ページの情報参照のしかた色々プラグイン Next Page
http://wordpress.org/extend/plugins/next-page/
がやりたいことに近いのではないでしょうか。子ページだけに「次」「前」を付けたいなら、子ページ用のテンプレートを作るか、ページの親フィールドが 0 でない場合のみテンプレートタグを埋め込めばよいと思います。
自分で関数を作る場合でも、プラグインの中の
function flatten_page_list(){]
function get_next_link(){}
function get_previous_link(){}
この辺の関数が参考になると思います。