web-dev-qa-db-ja.com

カスタム投稿タイプに<! - more - >タグを追加する

私は友人のためのポートフォリオサイトを構築しています、そして彼は3つの別々の写真パッケージを持っていて、将来もっと追加したいかもしれません。すべてが1ページに表示されます。各パッケージがsinple.phpページにリンクして完全なコンテンツを表示するようにsingle-packages.phpテンプレートを作成しましたが、エディター内に 'more'タグを追加してもコンテンツとコンテンツは分割されません。 packagesページでは、 'more'タグの前にコンテンツを表示するだけでなく、すべての情報が表示されます。

これについての任意の助けは大歓迎です。

note - 私はPHP専門家ではないので、複雑なコーディング提案を理解することはできません

1
Evie Milo

状況によっては、read moreリンクを表示するためにthe_content()を呼び出す前に$ moreグローバルを0に設定する必要があります。

 global $more;
 $more = 0;
 the_content( '<span>Read More...</span>' );
2
Dave Romsey

私は同じ問題を抱えており、これが最善の解決策であることがわかりました:

<?php
   $content = get_the_content(); 
   $dot = "."; 
   $position = stripos ($content, $dot); 

   if($position) { 
        $offset = $position + 1; 
        $position2 = stripos ($content, $dot, $offset); 
        $first_one = substr($content, 0, $position);
        $first_two = substr($content, 0, $position2); 

        if($position2 > 120) {
           echo $first_one . '.';
        }

        else {
            echo $first_two . '.';
         }
   }

         else {  

         }

?>

上のコードは2つの最初の文(ポスト抜粋)を表示し、それらが120シンボルより長い場合 - 最初の文だけを表示します。

コンテンツにドットがない場合は何もしません。

抜粋の後、Read moreリンクを添付してください。

<a class="read-more" href="<?php the_permalink(); ?>">Read more...</a> 

そして、すべてが大丈夫です。

私はなぜ "more tag"がいくつかのカスタム投稿タイプでうまくいかないのかわからないが、私はそれを理解するのに多くの時間を費やし、結局このばかげた機能で終わった。

私もPHPプログラマではないし、この解決策はかなり長く複雑であることを知っていますが、それが私にとってうまくいった唯一のもので、私は同じ場所にいました。

この機能は完璧ではなく、 "etc"のような単語の後のドットを認識しません。または「例」の場合は、すべてのドットを文の終わりとして扱います。

0
Wordpressor