keikkkk
@keikkkk (P 山本)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

アーカイブページの記事のタイトルの文字数を20文字に設定できません。

Q&A

Closed

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

マルチポストです、他のサイトでは回答がなかったので、こちらでも質問します。

スクリーンショット 2022-03-19 15.59.16.png

PHP(function)

<?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);
PHP(ブログ一覧ページ(archive.php))
<?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(); ?>

PHP(ブログ一覧ページ(archive.php))


<?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(); ?>





0

1Answer

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

0Like

Your answer might help someone💌