senkegs
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 静的サイトとの組み合わせでのパーマリンク設定について解決はしていないのですが、urlを変えて対処することにしました。
blogという名前をarticleにし、
http://example.com/article
にwordpressをインストールしてブログの記事を投稿http://example.com/article/information/
にinformation一覧にしました。
シンプルな構造になったので、これで実装できそうです。
お騒がせしました。フォーラム: 使い方全般
返信が含まれるトピック: 管理画面が更新されませんjim912さん
ありがとうございます。
コードは消してしまったので正確にはお答えするのは難しいのですが、remove_capは使っていたので、これのせいですね..。
データーベースそのものを書き換えるとは思ってもみなかったです。一度クリーンな状態にしたかったので、他のデータベースからwp_user_rolesの値をとってきたら無事元通りになりました。
今後のことを考えると、User Role Editorを使ったほうが他の人が見ても分かりやすいように思うので、こちらを使用したいと思います。ありがとうございました!
フォーラム: 使い方全般
返信が含まれるトピック: 投稿とカスタム投稿タイプでのページャーの実装についてそういうことだったのですね…
原因が分からなかったので、大変助かりました。$argを以下に変更したら実装することができました。
ありがとうございます!$arg = array( 'posts_per_page' => 9, 'post_type' => array('post','experts','information'), 'meta_key' => 'number', 'orderby' => array( 'meta_value_num'=>'ASC', 'date'=>'DESC' ) 'paged'=>$paged );
フォーラム: テーマ
返信が含まれるトピック: アーカイブページで標準の投稿とカスタム投稿を表示させる方法それぞれのページでの設定になるのですね、勉強になります。
タイトルと内容が外れてきましたので、get_next_post_sort、get_previous_post_sortを試してみて、また分からなければ改めて質問させて頂きます。
有難う御座いました!
フォーラム: テーマ
返信が含まれるトピック: アーカイブページで標準の投稿とカスタム投稿を表示させる方法そうなんですね、ありがとうございます。
pre_get_postsはメインクエリーを書き換え、個別ページも順応すると思っているのですが、そういうものではないのでしょうか?ということを踏まえて色々考えみましたが、
今回のカスタム投稿タイプにカテゴリーなどが表示されなかったのは、投稿とカテゴリーの記事でページ送りが複雑になるを避けるため、という気がしてきました。フォーラム: テーマ
返信が含まれるトピック: アーカイブページで標準の投稿とカスタム投稿を表示させる方法お答えありがとうございます。
バグなのですか…どうりで出来なかったわけですね。。
原因が判明して良かったです。教えて頂いたコードをfunctions.phpに記載しましたところ、無事実装できました!
ありがとうございます。ただ、phpもといwordpressに詳しくないので、内容がよくわからず..
不明点もありつつ自分なりに以下のように解釈しましたが、こんな感じでしょうか?function custom_pre_get_posts( $wp_query ) { //管理画面ではなく、メインクエリーの場合 if ( ! is_admin() && $wp_query->is_main_query() ) { if ( $wp_query->is_category() || $wp_query->is_tag() ) { $post_types = array();//空の配列 $all_post_types = get_post_types( array( 'exclude_from_search' => false ) );//検索対象に含まれる全ての投稿(メディア含む)を取得 //カテゴリーページの場合 if ( $wp_query->is_category() ) { //投稿があるだけ繰り返し foreach ( $all_post_types as $pt ) { $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt );//attachment(メディアが)が添付されていれば、タクソノミーのメディアを取得、無ければ全てのタクソノミーの値(メディアも?)を取得 if ( in_array( 'category', $object_taxonomies ) && ! in_array( $pt, $post_types ) ) {//$object_taxonomiesの中にcategoryがあり、$post_typesに$ptが含まれていれば...(?) $post_types[] = $pt;//空の配列に代入していく } } } //タグページの場合 if ( $wp_query->is_tag() ) { foreach ( $all_post_types as $pt ) { $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt ); if ( in_array( 'category', $object_taxonomies ) && ! in_array( $pt, $post_types ) ) {//タグページなのにcategoryとは何故でしょうか..? $post_types[] = $pt; } } } if ( $post_types ) { $wp_query->set( 'post_type', $post_types );//$post_typesを投稿順に } } } } add_action( 'pre_get_posts', 'custom_pre_get_posts' );
また、別トピを立てた方が良いかもしれませんが、投稿の順番を変えるプラグインもきかず、バグかもということで、同じようにfunctions.phpで設定しようと思いました。
(一覧ページだけなら実装できたのですが、個別ページが投稿順でページ送りになってしまったので、pre_get_postsを使えばよいのかなと..後出しですみません)if ( $post_types ) {
$wp_query->set( ‘post_type’, $post_types );
}の後に以下のコードを挿入しましたが、上手くいきませんでした。。
if ( $wp_query->is_post_type_archive('カスタムフィールド名')){ $wp_query->set( 'post_type', 'カスタムフィールド名' ); $wp_query->set( 'order', 'DESC' );//タクソノミーの値でソート $tax_query[] = array( 'taxonomy'=>'タクソノミー名', 'field'=>'slug' ); $wp_query->set('tax_query', $tax_query); }
よろしければ、こちらも教えて頂ければ幸いです。
すみませんがよろしくお願い致します。フォーラム: テーマ
返信が含まれるトピック: カスタムフィールドでの投稿順のソート、及び日付でのソートなるほど、ありがとうございます。
複数ソートの場合はこれまでの書き方から変えないといけないのですね。
とてもよくわかりました!お忙しい中教えていただき、大変助かりました。
どうもありがとうございます。フォーラム: テーマ
返信が含まれるトピック: カスタムフィールドでの投稿順のソート、及び日付でのソートありがとうございます。
‘relation’ => ‘AND’が肝だったのですね..‘meta_カスタムフィールド名’でも実装できるとは、初めて知りました。
勉強になります。教えていただいたもので十分実装できたのですが、もしよろしければ以下も教えて頂ければ幸いです。
試しにmeta_queryを以下のようにすると、優先順位のソートはできたものの、開催日でのソートがうまく実装できなかったのですが、array(
‘key’ => ‘number’,
),
と‘meta_number’ => array(
‘key’ => ‘number’,
),では設定しているものが違うのでしょうか…?
$args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'number', ), array( 'key' => 'day', ), array( 'key' => 'endday', 'compare' => '>=', 'value' => date("Y-m-d"), 'type' => 'DATE', ) ), 'orderby' => array ( 'number' => 'ASC', 'day' => 'DESC', ), );
フォーラム: テーマ
返信が含まれるトピック: カスタムフィールドでの投稿順のソート、及び日付でのソートありがとうございます。
日本語のリンク先や色々と見ていたのですが、未だによく分かりません…教えて頂いた英語サイトの方が分かりやすいのは確かですが..orderbyが’meta_value”meta_value_num’、orderが’DESC”ASC’であったものが、複数ソートになるとorderbyが’DESC”ASC’になるのが、謎すぎて..
あれから、これらのリンク先
WordPressで指定したカスタムフィールドが存在しない場合の投稿一覧を取得する方法
get_postsで、複数のカスタムフィールドをキーにして検索・取得する方法を参考にして、
‘meta_value’ => ‘null’,
‘meta_compare’ => ‘!=’
や
‘meta_compare’ => ‘NOT EXISTS’
と試しましたが、そもそもnumberを記入した記事しか表示されていないので、別のところがおかしいのでしょうか。$args =array( 'orderby' => array ( 'day' => 'DESC', 'number' => 'ASC' ), 'meta_query' => array( array( 'key'=>'number', 'meta_value' => 'null', 'meta_compare' => '!=' ), array( 'key'=>'day', 'meta_compare' => 'NOT EXISTS' ) ) );
イベントの終了日の設定は、別項目として設けたいと思います。
ありがとうございます。