offsetがある場合のページ送りについて
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 1,404
【カスタム投稿タイプ】
・タグにopenがある場合、優先して表示
・openの記事から下はは時系列で表示
・1ページに10件表示
ということをやりたいです。
時系列で記事一覧を表示しているので
・最初にopenタグがある場合はその記事を表示
・それ以外はopenタグを省いた投稿で時系列で表示(ページング)
としたいのですが、、、
伝わりますでしょうか><
【1ページ目】
openタグあり投稿記事
openタグあり投稿記事
openタグあり投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
【2ページ目】
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
openタグなし投稿記事
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
タグでの記事並べ替えは確か出来なかったと思います。WP_Queryはカスタムフィールドなら並べ替えが出来るため、
・カスタム投稿タイプにアーカイブが有る
・タグを使わない(もしくはもう一手間かける)
という条件であれば出来るような気がします。
- カスタムフィールドに「open」フラグを持つものを作る
pre_get_posts
でカスタム投稿タイプの場合条件を追加する
'meta_key' と 'orderby' でカスタムフィールドでの並べ替えを行う。- (タグを使う場合)記事の保存にフックしてタグが付いた場合はカスタムフィールドに「open」フラグを入れる
当然タグが外れたタイミングでも同じくカスタムフィールドを操作。
// 未テスト(こういう感じ、という例)
function custom_query_pre_get_posts( $query ) {
if ( is_admin() || !$query->is_main_query() ) { return $query; } // 管理画面は除外
if ( is_post_type_archive( 'custom_post_type_name' ) ) { // カスタム投稿タイプ名 'custom_post_type_name'
$query->set( 'meta_key', 'custom_field_name' ); // カスタムフィールド名 'custom_field_name'
$query->set( 'orderby', array( 'meta_value_num' => 'ASC', 'date' => 'DESC' ) ); // 並び順を指定
}
return $query;
}
add_action( 'pre_get_posts', 'custom_query_pre_get_posts' );
/* 3. のコードは書いていません */
【WordPress ≫ 記事の絞り込みや並び替えを行う | MORILOG】
http://morilog.com/wordpress/tips/custom_parse_query/
【カスタムフィールドで並び替え:WordPress私的マニュアル】
http://elearn.jp/wpman/column/c20130809_01.html
【WordPressのカスタムフィールドでソートする | com4tis】
http://com4tis.net/wordpress-customfield-sort/
【もっと簡単版!WordPress 投稿の並び順の条件(orderby)を複数にして、それぞれの並べ方(order)を別々に指定したい。 - かもメモ】
http://chaika.hatenablog.com/entry/2015/12/25/154244
もしこの方法を採られる場合は、複合キーワードでの検索は案外難しいのでトライ&エラーが必須ですので、がんばってください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
かなり力技ですが一応思いついたものを・・・
1ページ目
- WP Query等で「タグあり」の投稿を取得して表示、この時件数も取得(例3件)
- 「タグなし」を取得する際に
10-タグあり件数
だけ取得して表示(7件取得)
2ページ目以降
- 「タグあり」の件数を取得(例3件)
10*($paged-1)-タグあり件数
をoffset
にセットして「タグなし」を表示
(7をoffsetに指定することで8件目から10件取得)
という感じですが実際には「タグあり」が10件を超える場合もあるのでその辺の条件分岐も必要になると思います。
タグの有無を条件に指定したり取得件数の変更等その他のパラメータに関してもWordPress Codex 日本語版等で一通り確認してみて下さい。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/27 10:38
タグではなく、タクソノミーの場合は実現可能でしょうか?
2016/05/27 10:57
並べ替えに使える要素は、公式リファレンスの下記ページ中ほどに「Order & Orderby Parameters」という項目が有るのでそこを見てください。
【WP_Query | Class | WordPress Developer Resources】
[https://developer.wordpress.org/reference/classes/wp_query/](https://developer.wordpress.org/reference/classes/wp_query/)
2016/05/27 13:17