質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.37%

  • WordPress

    4759questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Wordpress カスタム投稿タイプで抜粋の文字数を変更したい

解決済

回答 1

投稿 2017/11/29 11:44

  • 評価
  • クリップ 0
  • VIEW 71

YuriY

score 10

TOPページに固定ページをインクルードさせてカスタム投稿タイプで登録したデータの抜粋を文字数を変更して表示したいです。

$the_query = new WP_Query($args);
if($the_query->have_posts()):
    while($the_query->have_posts()): $the_query->the_post();
        //ここに処理を記述
    $excerpt = the_excerpt();
?>
                <a href="/bunkazaitype/bunka/"><img src="省略"></a>
            </div>
            <div class="contents-img">

<?php
    $thumbnail = the_post_thumbnail();
    endwhile;
endif;
wp_reset_postdata();
?>

$excerpt = the_excerpt();の部分で抜粋されたデータは表示されました。
しかし、文字数を変更したいので

<?php echo mb_substr((get_the_content()), 0, 70); ?>
を使うとデータが取得できず何も表示されません。

自由に編集できるデータを取得するにはどのように記述すればよいでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

データが取得できず何も表示されません。

何かエラーが出てませんか?

環境が分からないので推測ですが、
mb_関数(マルチバイト関数)はデフォルトで無効化されている場合があります。
まずはそもそもmb_関数が使えるかどうかを確認してください。
確かphpinfo();でモジュールが有効になっているかどうか確認できるはずです


【追記】
mb_substr()を使わない方法ですが、functions.phpでthe_excerpt()のデフォルトの文字数を変更する方法もあります。

参考
WordPressで記事本文を抜粋表示する文字数と文末の[…]を変更する方法
http://whitebear-seo.com/wordpress-excerpt-change/

投稿 2017/11/29 13:13

編集 2017/11/29 13:27

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/29 14:29

    桜のレンタルサーバで開発しています。
    mb_関数(マルチバイト関数)は使用できました。

    the_excerpt()の中身を確認するとデータが表示されるのですが、
    get_the_content()の中身が空の状態なんです。

    webでしらべたところ、投稿ページのデータは上記問題なく使用できるが
    カスタム投稿タイプはget_the_content()が使用できないと書いてあるのをみました。

    キャンセル

  • 2017/11/29 14:44

    `get_the_excerpt()`に置き換えたら上手く行きませんか?デフォルトで110文字出力されるので`mb_substr()`で70文字で取り出しても問題ないと思います

    キャンセル

  • 2017/11/29 14:47

    はい。うまく挙動しませんでした。
    get_the_content()の中身が空になります。

    http://blog.sincerity.me/2014/02/wordpress.html

    で特殊な処理をすべきと書いてあるのを見つけたのですが、うまくいきませんでした。

    キャンセル

  • 2017/11/29 15:16

    `the_excerpt()`では取れるのに、`get_the_excerpt()`で取れないのは少し不思議ですね。`the_excerpt()`の処理途中で`get_the_excerpt()`を呼ぶはずですから。

    他の策としては`apply_filters()`でフックからコンテンツを取得するぐらいしか思いつきません。
    `echo apply_filters('the_content', $post->post_content);`

    キャンセル

  • 2017/12/01 15:56

    ありがとうございます!その方法で抜粋記事作成することができました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • WordPress

    4759questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。