サポート » 使い方全般 » 改ページをカスタムフィールドのみのsingle.php(loop外)で使いたい

  • クライアントが入力しやすいように、カスタム投稿をカスタムフィールドのみで、投稿を作成する予定です。
    そこでページ分割を行いたいのですが、クイックタグの<!– nextpage –>は、html エディタのみでしか使えないようなのです。

    ページ分割を直接、single.php などで使うことはできないのでしょうか。

    もしくは、ここから下は、/postname/2 のページ分割になるといった内容でも問題ございません。

    実現したいことは、
    カスタムフィールドのみのカスタム投稿で、ページ分割をしたい。
    1回の投稿で、「a分割ページ/」と、「a分割ページ/2」が作成されて、それぞれのページをお互いリンクさせたい。

    お教えいただけますと、大変助かります。
    どうかよろしくお願い申し上げます。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは

    $text = 'Lorem ipsum dolor sit amet, consectetur<!--more--> adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
    
    $text_array = get_extended ( $text );
    
    var_dump( $text_array );

    とすれば、テンプレートで、moreの前後を取り出すことが出来ると思います。
    この結果

    array(3) {
      ["main"]=>
      string(39) "Lorem ipsum dolor sit amet, consectetur"
      ["extended"]=>
      string(406) "adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      ["more_text"]=>
      string(0) ""
    }

    後は、そのページ内で表示非表示を、javascriptや、htmlで工夫すればいいのではないかと思います。

    トピック投稿者 maechuu

    (@maechuu)

    nobita さん、こんにちは
    ご返信ありがとうございます。

    私のこの返信が的を得ているかどうか、自信がないのですが、
    これは、more の前の main と、後ろの extended を、get_extended でわけて取得して
    別々で処理するという感じですよね。

    これは、<!–more–>を、投稿本文中に記載しなくても可能なのでしょうか。

    ご回答いただけますと幸いです。

    コードに示している通り、引数は普通のテキストです。
    投稿本文でも何でもありません。

    これは、<!–more–>を、投稿本文中に記載しなくても可能なのでしょうか。

    懸念する問題は、何でしょうか?

    single.phpに記述して問題があったという事であれば、詳細を記述してください

    トピック投稿者 maechuu

    (@maechuu)

    ご返信ありがとうございます。

    懸念する問題は、何でしょうか?

    私の固定観念で、本文中のみでしか使えないと思っておりました。

    後は、そのページ内で表示非表示を、javascriptや、htmlで工夫すればいいのではないかと思います。

    なるほどと、と思いまして <!–more–> を使わず、単にjQuery でページ分割を行えばとおもいました。

    ただ私が知る限りでは、ハッシュタグによるURLの変更になり、
    <!–nextpage–>のように、別ページとして作成できないものかと、思っています。

    チョット誤解があるかもしれないので、

    わかってらっしゃると思いますが念のため

    <!--more-->
    は、シングルページの特定の位置に目印を付ける記法です

    ループページは、それぞれ、すべてシングルページへのリンクがあるわけですが、
    この記法をを検知した場合、#more-1234 といった、フラグメント識別子を付けたリンクを表示して、それ以降の投稿を表示しなくします。
    ページを作ることに関与するような事ではなく、リンクを作り、それ以降を表示しないだけです。
    <!--nextpage-->
    は、ループページのページングに使われる$pagedとは異なり、一つのページ内で擬似的なページを作りだすために、pageというクエリを利用しています。

    #more-1234といったフラグメントに対しては、CSSの :target を使えば表示非表示のコントロールは可能ですし

    pageというクエリを使っても同様のことが出来ると思います。

    サンプルコード

    $text = 'Lorem ipsum dolor sit amet, consectetur<!--more--> adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
    
    $text_array = get_extended($text);
    
    if ( empty( $text_array['more_text']) ){
    	$text_array['more_text'] = __( 'Read More', 'text_domain');
    }
    if( get_query_var('page') == 2 ) {
    
    	echo $text_array['extended'];
    }else{
    	echo $text_array['main'];
    	printf('<p><a href="%1$s">%2$s</a></p>',
                    'http://example.com/wp/?page_id=26062&page=2',
                    $text_array['more_text']
            );
    }

    とすれは、<!--nextpage-->的な、表示コントロールが可能ではないかと思います

    出力時のエスケープは省いていますので、必要部分追加してください。

    トピック投稿者 maechuu

    (@maechuu)

    ご返信ありがとうございます。

    いえ、わかってなかったです。
    まだまだ勉強足らずですので、サンプルコードを参考にさせていただきまして、
    うまくいくようにやってみます。

    何度もご丁寧にありがとうございました。

    トピック投稿者 maechuu

    (@maechuu)

    解決済みにするをチェック忘れておりました。失礼いたしました。

    トピック投稿者 maechuu

    (@maechuu)

    nobitaさん

    すみません、一度解決済みにしたのですが、作成していくにつれて分からないところがでてしまいました。

    <!–more–>の、前と後ろにカスタムフィールドテンプレートで入力した値やアップロードした画像を出力したい場合は、どうしたらいいんでしょうか。

    php の知識も浅く、文字しか表示されないため、うんともすんともです。。

    どうか教えていただけますと大変助かります。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「改ページをカスタムフィールドのみのsingle.php(loop外)で使いたい」には新たに返信することはできません。