アーカイブページの記事のタイトルの文字数を20文字に設定できません。
ワードプレスでアーカイブページを作成しています、PHPを使用してタイトルの文字数を指定したいのですが、文字の数での指定ができません、全体の何%にするかのような指定になっているように思います。
マルチポストです、他のサイトでは回答がなかったので、こちらでも質問します。
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