サポート » 使い方全般 » 同階層+次のページの取得

  • 解決済 goodtimes

    (@goodtimes)


    こんにちは

    自分と同じ階層にいるページで
    自分の次のページ順序のページ

    これを取得したいんです
    全部はいらないんです
    ひとつだけです

    たとえば

    A~Gまでのページが同じ階層にあったとき
    現在表示されているページがCなら
    「D」と

    で、
    現在表示されているページがG(最後)なら
    出てほしくありません

    どれが使える関数でしょうか
    教えてください

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    goodtimesさん、こんにちは。

    同じ親を持つページをget_postsで取得して、foreachで精査し、自分の次があったらという方法も検討しましたが、今回は直接SQLで該当ページを取得するユーザー関数にしてみたいと思います。

    まず、テーマのfunctions.phpに下記のユーザー関数を追加してください。

    function get_next_page( $post ) {
    	global $wpdb;
    
    	if ( $post->post_type != 'page' ) { retrun; }
    	$next_page = $wpdb->get_row( $wpdb->prepare( "
    SELECT	*
    FROM	$wpdb->posts
    WHERE	post_type = 'page'
    AND		post_status = 'publish'
    AND		ID != %s
    AND		post_parent = %s
    AND		menu_order >= %s
    AND		post_title >= %s
    ORDER BY	menu_order ASC, post_title ASC
    LIMIT	1", $post->ID, $post->post_parent, $post->menu_order, $post->post_title ) );
    	return $next_page;
    }

    あとは、ページを表示する際に使用されるテンプレートに、

    $next_page = get_next_page( $post );

    と記述していただければ、次のページのデータもしくはnullを取得できるかと思います。

    トピック投稿者 goodtimes

    (@goodtimes)

    Jim912さん

    こんにちは。御礼が遅くなって申し訳ないです。
    いつも詳しくやさしく教えてくださって感謝しています
    結局これは、「いるっしょ!」と言ってた言い出しっぺの人から「やっぱ不要だね!」と言われてしまいましたトホホです。
    個人的に、SQLの文章がとても参考になりました。
    ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「同階層+次のページの取得」には新たに返信することはできません。