

他のサイトで回答をいただけなかったので、こちらでも質問します。  
（マルチポスト）

ワードプレスでアーカイブページを作成しています、PHPを使用してタイトルの文字数を指定したいのですが、文字の数での指定ができません、全体の何％にするかのような指定になってしまいます。

[![画像の説明をここに入力](https://i.stack.imgur.com/vcLBX.png)](https://i.stack.imgur.com/vcLBX.png)

PHP(function)

[code]

    <?php
    function my_enqueue_scripts() {
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'bundle_js', get_template_directory_uri(). '/assets/js/bundle.js', array() );
        wp_enqueue_style( 'my_styles', get_template_directory_uri(). '/style.css', array() );
    }
    add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts' );
    
    add_theme_support('post-thumbnails');
    
    // 投稿のアーカイブページを作成する
    function post_has_archive($args, $post_type)
    {
        if ('post' == $post_type) {
            $args['rewrite'] = true; // リライトを有効にする
            $args['has_archive'] = 'blog'; // 任意のスラッグ名
        }
        return $args;
    }
    function twpp_change_excerpt_length( $length ) {
        return 20; 
      }
      add_filter( 'excerpt_length', 'twpp_change_excerpt_length', 999 );
    add_filter('register_post_type_args', 'post_has_archive', 10, 2);
    
    
    
[/code]

PHP（ブログ一覧ページ（archive.php））

[code]

    <?php get_header(); ?>
    <section class="blog-archive-wrapper">
        <div class="blog-archive-wrapper-second">
            <div class="blog-archive-outer">
                <h2 class="blog-archive-title">ブログ</h2>
              
                <?php // ブログの一覧を表示する start ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <article class="blog-list__list-item">
            <a href="<?php the_permalink(); ?>" class="blog-item">
                <?php // アイキャッチを表示させる start ?>    
                <div class="blog-item__thumbnail">
                    <?php if(has_post_thumbnail()): ?>
                    <img class="blog-item__thumbnail-image" src="<?php the_post_thumbnail_url('large'); ?>">
                    <?php endif; ?>
                </div>
                <?php // アイキャッチを表示させる end ?>
                <div class="blog-item__content">
                    <?php // タイトルを表示させる start ?>
                    <h3 class="blog-item__title"><?php the_title(); ?>
    
    // タイトルの文字数の指定
    <?php
    if(mb_strlen($post->post_title)>20) {
      $title= mb_substr($post->post_title,0,20) ;
        echo $title . '...';
      } else {
        echo $post->post_title;
      }
    ?>
    // タイトルの文字数の指定ここまで
                                        </h3>
                    <?php // タイトルを表示させる end ?>
                    <?php // 抜粋を表示させる start ?>
                    <h3 class="blog-item__read"><?php the_excerpt(); ?>
                   </h3>
                    <?php // 抜粋を表示させる end ?>
                    <div class="blog-item__button">
                        <span class="blog-item__button-more">記事を読む</span>
                    </div>
                    <?php the_time('Y-m-d'); ?>
        </article>
    <?php endwhile; endif; ?>
    <?php // ブログの一覧を表示する end ?>
    
    <?php the_posts_pagination(
        array(
            'mid_size'      => 2, // 現在ページの左右に表示するページ番号の数
            'prev_next'     => true, // 「前へ」「次へ」のリンクを表示する場合はtrue
            'prev_text'     => __( '前へ'), // 「前へ」リンクのテキスト
            'next_text'     => __( '次へ'), // 「次へ」リンクのテキスト
            'type'          => 'list', // 戻り値の指定 (plain/list)
        )
    ); ?>
               
    </section>
    <?php get_footer(); ?>
    
    
[/code]


CC BY-SA 4.0
2022-03-19T23:56:42.883
87920
2022-03-21T09:33:36.597
49042
question
php wordpress
アーカイブページの記事のタイトルの文字数を２０文字に設定できません。


さんざんいろいろ試しましたが、  
`<?php echo mb_substr($post->post_title, 0, 20).'……'; ?>`  
このシンプルなもので良かったようです、なぜか複雑なやつはだめでしたがこれだと出来ました。


CC BY-SA 4.0
2022-03-21T09:33:36.597
87949
2022-03-21T09:33:36.597
49042
87920
answer