Set Excerpt Length WordPress
January 31, 2025 · AI Conversations
1. **Open your theme's `functions.php` file.**
You can find this file in your theme directory under `wp-content/themes/your-theme-name/functions.php`.
2. **Add the following code:**
function custom_excerpt_length($length) {
return 20; // Change this number to set the desired excerpt length in words.
}
add_filter('excerpt_length', 'custom_excerpt_length');
In this code, change the `20` to the number of words you want your excerpts to display.
3. **Save the changes.**
After implementing this code, your excerpts will be limited to the specified number of words throughout your WordPress site.
### Additional Customizations
– If you want to customize the "read more" text that appears at the end of the excerpt, you can add the following code to your `functions.php` file:
function custom_excerpt_more($more) {
return '...'; // Change this to your desired "read more" text.
}
add_filter('excerpt_more', 'custom_excerpt_more');
This will help you manage the length and appearance of your post excerpts in WordPress effectively.
Here's how you can set the excerpt length in the same place where you display it:
1. **Open your theme's `functions.php` file.**
2. **Add the following code to set the excerpt length:**
function custom_excerpt_length($length) {
return 20; // Change this number to set the desired excerpt length in words.
}
add_filter('excerpt_length', 'custom_excerpt_length');
3. **Use `the_excerpt()` in your template file:**
Wherever you call `the_excerpt()`, you should see the updated length take effect based on the code you added in `functions.php`.
### Example Template Usage
For instance, if you're using `the_excerpt()` in a loop in a template file (like `index.php`, `archive.php`, or `single.php`), it might look something like this:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<div><?php the_excerpt(); ?></div>
<?php endwhile; endif; ?>
### Adjusting "Read More" Text
If you also want to change the "read more" text that appears at the end of the excerpt, add the following to the same `functions.php` file:
function custom_excerpt_more($more) {
return '... <a href="' . get_permalink() . '">Read More</a>'; // Customize the "Read More" text here.
}
add_filter('excerpt_more', 'custom_excerpt_more');
### Summary
By following these steps, you will set a custom length for the excerpts displayed using `the_excerpt()` in your WordPress theme, along with the ability to customize the "read more" link.
### Step 1: Create a Custom Excerpt Function
1. **Open your theme's `functions.php` file.**
2. **Add the following custom excerpt function:**
function custom_excerpt($length) {
$excerpt = get_the_excerpt();
$words = explode(' ', $excerpt);
if (count($words) > $length) {
$excerpt = implode(' ', array_slice($words, 0, $length)) . '...'; // Adjust the number of words.
}
return $excerpt;
}
### Step 2: Use the Custom Excerpt Function
Now, instead of using `the_excerpt()`, you can call your custom function wherever you want to display the excerpt:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<div><?php echo custom_excerpt(20); // Change the number to set the desired excerpt length in words. ?></div>
<?php endwhile; endif; ?>
### Explanation
– **`custom_excerpt($length)`**: This function takes a parameter `$length` to specify the desired number of words for the excerpt.
– **`get_the_excerpt()`**: This retrieves the default excerpt for the current post.
– **`explode()` and `array_slice()`**: These functions split the excerpt into words, slice it to the desired length, and then join it back into a string.
– **`implode()`**: This combines the sliced array back into a string, adding an ellipsis (`…`) at the end if the excerpt is longer than the specified length.
### Step 3: Customizing the "Read More" Link
If you want to customize the "read more" link, you can include it in the returned string within your `custom_excerpt()` function:
function custom_excerpt($length) {
$excerpt = get_the_excerpt();
$words = explode(' ', $excerpt);
if (count($words) > $length) {
$excerpt = implode(' ', array_slice($words, 0, $length)) . '... <a href="' . get_permalink() . '">Read More</a>'; // Customize the "Read More" text.
}
return $excerpt;
}
### Summary
By creating a custom PHP function for your excerpt, you gain full control over its length and appearance directly where you call it in your theme files. Adjust the number passed to `custom_excerpt()` to change the excerpt length as needed.