投稿ではなく現在のカテゴリの子カテゴリを表示するカスタムカテゴリテンプレートを作成しました。子カテゴリは、カスタムのサムネイル、タイトル、およびカテゴリの説明によって表示されます。
カテゴリの説明を定義済みの文字数にトリミングする機能を追加しましたが、どのアクションフックを使用するべきかわかりません。
これが関数です:
function trim_text($input, $length, $ellipses = true, $strip_html = true) {
//strip tags, if desired
if ($strip_html) {
$input = strip_tags($input);
}
//no need to trim, already shorter than trim length
if (strlen($input) <= $length) {
return $input;
}
//find last space within length
$last_space = strrpos(substr($input, 0, $length), ' ');
$trimmed_text = substr($input, 0, $last_space);
//add ellipses (...)
if ($ellipses) {
$trimmed_text .= '...';
}
return $trimmed_text;
}
関数の結果を使って何かをしたいので、アクションは必要ありませんが、フィルタは必要ありません。このフィルタは、予想通り、 category_description
と呼ばれています(テストはしていません)。
function wpse236947_trim_category_desc ( $desc, $cat_id ) {
// do your thing
return $desc;
}
add_filter( 'category_description', 'wpse236947_trim_category_desc' );
質問をするとき、私は wp_trim_words() 関数を知りませんでした。私のfunctions.phpファイルからカスタム関数を削除した後にしなければならなかったのは私のカスタムカテゴリテンプレートに<?php echo wp_trim_words( $child->description, 15, '...' ); ?>
を追加することだけでした。