-
AuthorPosts
-
November 24, 2022 at 5:57 pm #1373805
Hi I have this for portfolio grid –
add_filter('avf_portfolio_grid_excerpt', function($excerpt, $entry) { $excerpt = get_field( 'the_project', $entry->ID ); return $excerpt; }, 10, 2);
How do I do the same for blog posts? I tried:
add_filter('avf_blog_posts_excerpt', function($excerpt, $entry) { $excerpt = get_field( 'the_project', $entry->ID ); return $excerpt; }, 10, 2);
But it didn’t work – anyone know the correct filter?
Thanks in advance.
November 25, 2022 at 8:45 am #1373831Hey domchocolate,
Thank you for the inquiry.
You can use the get_the_excerpt filter to adjust the excerpt of the default posts.
// https://developer.wordpress.org/reference/hooks/get_the_excerpt
Make sure to check for the post type.
Best regards,
IsmaelNovember 25, 2022 at 9:28 am #1373837Sorry – I’m no expert. Can you elaborate? How do I add that to my code above? The excerpt needs to be replaced by a custom field.
Thanks in advance
Dominic
November 25, 2022 at 10:32 am #1373844Hi Dominic,
Please try to use this filter:
// Use custom excerpt for Blogposts for grid layout add_filter("avf_post_slider_entry_excerpt", function($excerpt, $prepare_excerpt, $permalink, $entry, $class) { $excerpt = get_field( 'the_project', $entry->ID ); return $excerpt; }, 10, 5); // Use custom excerpt for Blogposts in all layout except grid add_filter('get_the_excerpt', function($excerpt, $entry) { $excerpt = get_field( 'the_project', $entry->ID ); return $excerpt; }, 10, 2);
Hope this helps.
Best regards,
NikkoNovember 25, 2022 at 12:35 pm #1373864Thanks Nikko – that’s great. And works a treat. Is there a way to put a word count – say the first 50 words and then add a “…” at the end or a [READ MORE]??
November 29, 2022 at 1:12 am #1374220Hi domchocolate,
Please try to replace the last code I gave with this one:
function modify_excerpt($excerpt) { $label = "Read More"; $limit = 50; $excerpt = string_limit_words( $excerpt, $limit) . '…'; $excerpt .= '<a href="" class="avia-button av-readmore avia-icon_select-no avia-size-small avia-position-center avia-color-theme-color"><span class="avia_iconbox_title">' . $label . '</span></a>'; return $excerpt; } function string_limit_words($string, $word_limit) { $words = explode(' ', $string, ($word_limit + 1)); if(count($words) > $word_limit) { array_pop($words); } return implode(' ', $words); } // Use custom excerpt for Blogposts for grid layout add_filter("avf_post_slider_entry_excerpt", function($excerpt, $prepare_excerpt, $permalink, $entry, $class) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = modify_excerpt($custom_excerpt); } return $excerpt; }, 10, 5); // Use custom excerpt for Blogposts in all layout except grid add_filter('get_the_excerpt', function($excerpt, $entry) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = modify_excerpt($custom_excerpt); } return $excerpt; }, 10, 2);
Just change the label and limit as you see fit.
Hope this helps.Best regards,
NikkoNovember 29, 2022 at 12:45 pm #1374259Hi Nikko – thanks for this but no cigar I’m afraid. It’s pulling the excerpt from the_project through but not cutting it to 50 words.
See links below and PW in private content.
Masonry portfolio element:
https://owe.brother.design/project-item/oxford-station-western-side/Blog post element:
https://owe.brother.design/sites/oxpens-phase-1/Thanks in advance
DominicNovember 29, 2022 at 3:20 pm #1374300Also is it possible to use the excerpt from an excerpt field when the_project either hasn’t been utilised or isn’t on another post type?
In other words:
Post types I have =
Portfolio items – use the_project custom field as excerpt
Sites – use the_project custom field as excerpt
Posts – doesn’t have the the_project custom field so use excerpt field for the excerpt.Thanks in advance.
December 3, 2022 at 3:27 am #1374852Hi domchocolate,
I apologize for the delayed response.
I have tested the code and it works, can you create a staging site? where we can try to check why it’s not working on your end.
Also, please give us temporary admin access on it.Also is it possible to use the excerpt from an excerpt field when the_project either hasn’t been utilised or isn’t on another post type?
Yes, it’s possible that why there’s a code to check it:if ( $custom_excerpt ) { $excerpt = modify_excerpt($custom_excerpt); }
Best regards,
NikkoDecember 5, 2022 at 1:15 pm #1375099Hi Nikko
Basically, it works for the posts element, see – https://owe.brother.design/sites/oxpens-phase-1/ under heading Other development opportunities when the post element is calling a custom post and using the_project as an excerpt. But for some reason not in the second post element on the same page under the heading Related news and updates – this one uses a post element calling standard posts from the blog and using a standard excerpt field (doesn’t shorten the excerpt to 50 words or add [more info].
Also, it doesn’t work at all for portfolio grids, see – https://owe.brother.design/project-item/oxford-station-western-side/ under heading Other projects.
Code added as Code snippet
Any thoughts?
December 5, 2022 at 1:41 pm #1375101BTW I sorted the portfolio grid by using the post element to call portfolio items instead.
December 5, 2022 at 2:34 pm #1375106One other thing – I created this test page. This uses blog posts element throughout (no portfolio grids). https://owe.brother.design/excerpt-test/
Blog post element 1 – calls standard posts and uses the standard excerpt field. This element is not working as I’d like because it does not shorten the excerpt or add ‘… Read more >’.
Blog post element 2 – calls portfolio posts and uses the_project custom field as excerpt.You’ll also notice that when the excerpt is longer than 50 words and the excerpt is edited then the ‘… Read more’ works correctly by being inserted after the 50th word.
If excerpt is shorter than 50 words then the ‘… Read more’ is after a line break which is inconsistent and not as desired. Also when the excerpt is shorter than 50 words it’s displaying the full excerpt and therefore the ‘…’ is not actually necessary or grammatically accurate. Can we remove the ‘…’ under those parameters and display the ‘Read more’ directly after the last word of the excerpt?
Does that makes sense? And thanks in advance.
Dominic
- This reply was modified 2 years ago by domchocolate.
December 14, 2022 at 11:55 am #1376122Hi – just checking in. Any thoughts?
December 16, 2022 at 8:10 am #1376363Hi domchocolate,
I apologize for the delayed response.
You can remove the ‘…’ by changing this code:$excerpt = string_limit_words( $excerpt, $limit) . '…'; $excerpt .= '<a href="" class="avia-button av-readmore avia-icon_select-no avia-size-small avia-position-center avia-color-theme-color"><span class="avia_iconbox_title">' . $label . '</span></a>';
to:
$excerpt = string_limit_words( $excerpt, $limit); $excerpt .= ' <a href="" class="avia-button av-readmore avia-icon_select-no avia-size-small avia-position-center avia-color-theme-color"><span class="avia_iconbox_title">' . $label . '</span></a>';
and to make sure that read more is added after the paragraph, you can add this CSS code in Quick CSS:
#top .avia-content-slider .slide-entry-excerpt.entry-content p { display: inline; }
Hope it helps.
Best regards,
NikkoDecember 16, 2022 at 9:12 am #1376371maybe a function like this is helpful – if you got your excerpt
( i do not see your site – so no examination of the DOM for me is possible – you had to adapt the selectors yourself )
f.e. if you have the grid layout for blog …(function($){ // trim excerpt by words function trimByWord(sentence,wordcount = 50) { var result = sentence; var resultArray = result.split(" "); if(resultArray.length > wordcount){ resultArray = resultArray.slice(0, wordcount); result = resultArray.join(" ") + " … Read more"; } return result; } $(document).ready(function(){ $('.avia-content-slider .slide-entry').each(function() { $('.slide-entry-excerpt.entry-content').text(function(index, currentText) { return trimByWord(currentText); }); }); }); })(jQuery);
and here:
" … Read more"
you can choose your addendumDecember 16, 2022 at 2:29 pm #1376416Thanks, Nikko
That CSS addressed the problem on the read more issue – see second blog post element on page https://owe.brother.design/excerpt-test/. This element displays portfolio or custom posts that use the_project custom field as the excerpt.
The first blog post element on the page https://owe.brother.design/excerpt-test/ – uses the element to pull in standard posts and uses the standard excerpt field on these posts. You can see that the excerpt is neither shortened to 50 words nor has the read more.
Any thoughts how to fix it in that scenario?
December 16, 2022 at 2:39 pm #1376419Hi Guenni and thanks for this.
I’m afraid this code has a syntax error somewhere (picked up by WPCode snippets. Any ideas?
Plus the website details are listed below in the private content.
The example page – https://owe.brother.design/excerpt-test/ – shows two post blog elements :
The top one displays standard posts and uses the standard WP excerpt field. This isn’t shortening the excerpt to 50 words.
The second example uses the same blog post element to display a custom post type (in this case Portfolio) and uses Nikko’s code above to use the text found in ‘the_project’ custom field as the excerpt (using Nikko’s code above). This does exactly what I want and shortens the excerpt.
Basically, I want the top one to act like the second one.
Does that make any sense?
December 17, 2022 at 11:21 am #1376455attention: this is only the jQuery function – if you like to use it – you had to build a php snippet of it.
but if the filter snippets of Nikko works – these will be a better way to do it. – Because it’s best to hook into the generation of those excerpts than to change them afterwards.January 3, 2023 at 12:46 pm #1377451Hi Nikko or anyone else – any luck with this???
January 3, 2023 at 1:48 pm #1377459OK – I got this working (almost). So I removed the copy from the excerpt field on the standard post and then the excerpt got pulled from the content field of the post. Perfect. Except it cuts the excerpt off at 9 words (10 including the ellipses (…) ). Can we get this to do 50 words the same as when we use the_project custom field as excerpt?
Example using standard posts: https://owe.brother.design/updates-and-events/
Example using custom post and the_project custom field: https://owe.brother.design/projects/
Thanks in advance
Dominic
January 4, 2023 at 1:20 am #1377532Hi Dominic,
Please try to increase the excerpt length by adding this code in functions.php:
function custom_postgrid_excerpt_length($excerpt_length) { $excerpt_length = 250; return $excerpt_length; } add_filter( 'avf_postgrid_excerpt_length', 'custom_postgrid_excerpt_length');
Then replace these codes:
// Use custom excerpt for Blogposts for grid layout add_filter("avf_post_slider_entry_excerpt", function($excerpt, $prepare_excerpt, $permalink, $entry, $class) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = modify_excerpt($custom_excerpt); } return $excerpt; }, 10, 5); // Use custom excerpt for Blogposts in all layout except grid add_filter('get_the_excerpt', function($excerpt, $entry) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = modify_excerpt($custom_excerpt); } return $excerpt; }, 10, 2);
to:
// Use custom excerpt for Blogposts for grid layout add_filter("avf_post_slider_entry_excerpt", function($excerpt, $prepare_excerpt, $permalink, $entry, $class) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = $custom_excerpt; } return modify_excerpt($excerpt); }, 10, 5); // Use custom excerpt for Blogposts in all layout except grid add_filter('get_the_excerpt', function($excerpt, $entry) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = $custom_excerpt; } return modify_excerpt($excerpt); }, 10, 2);
Hope this helps.
Best regards,
NikkoJanuary 5, 2023 at 11:09 am #1377687Thanks, Nikko – Brilliant! That works! One tiny issue…
On the custom posts that use the custom field (the_project) as an excerpt there is one set of ellipses (…) before read more link. eg. https://owe.brother.design/projects/
On the standard posts that use the content as the excerpt there are two sets of ellipses (.……) before read more link. eg. https://owe.brother.design/updates-and-events/
Any ideas on how we fix that so we only get one set on each?
Thanks in advance
- This reply was modified 1 year, 11 months ago by domchocolate.
January 6, 2023 at 11:29 am #1377819Hi Nikko
I noticed another issue with the read more links not linking to their respective post or custom post.
function modify_excerpt($excerpt) { $label = "Read More"; $limit = 50; $excerpt = string_limit_words( $excerpt, $limit) . '…'; $excerpt .= '<a href="" class="avia-button av-readmore avia-icon_select-no avia-size-small avia-position-center avia-color-theme-color"><span class="avia_iconbox_title">' . $label . '</span></a>'; return $excerpt; }
Should there not be something here:
<a href="call the post permalink" class="avia-button av-readmore avia-icon_select-no avia-size-small avia-position-center avia-color-theme-color">
eg:
href="'. get_permalink($post->ID) . '"
??? (I tried this one and it didn’t work).Thanks in advance
- This reply was modified 1 year, 11 months ago by domchocolate.
- This reply was modified 1 year, 11 months ago by domchocolate.
- This reply was modified 1 year, 11 months ago by domchocolate.
January 6, 2023 at 12:00 pm #1377823maybe use:
get_permalink($entry->ID)
January 6, 2023 at 12:03 pm #1377824Thanks, Guenni
Like this?
function modify_excerpt($excerpt) { $label = "Read more"; $limit = 50; $excerpt = string_limit_words( $excerpt, $limit) . '… '; $excerpt .= '<a href="'get_permalink($entry->ID)'"><span class="avia_iconbox_title">' . $label . '<span class="more-link-arrow"></span></span></a>'; return $excerpt; }
This returns an error “We encountered an error activating your snippet, please check the syntax and try again.”
- This reply was modified 1 year, 11 months ago by domchocolate.
January 6, 2023 at 6:32 pm #1377881Any luck? Anyone? I’m rather keen to fix this because I have a client waiting for this particular request. Sorry to be a pain.
January 7, 2023 at 1:50 pm #1377934It’s hard to give advice without seeing the object at hand.
A bit like I have to make a diagnosis without seeing the patient.
But you should try the binding points, as you indicated above.
____________
By the way, the more-link-arrow is mostly hidden in Enfold – so you could leave it out – whereas I would include the possibility of translating “Read more”.
Then you don’t need the$label = "Read More";
lineMaybe this way:
'<a class="more-link" href="'.get_permalink($entry->ID).'"><span class="avia_iconbox_title">' . __( 'Read more', 'avia_framework' ) . '</span></a>';
January 7, 2023 at 3:13 pm #1377942Thanks, @guenni007 – that didn’t work I’m afraid.
But I did find the solution in the end. For those interested it’s:
function string_limit_words( $string, $word_limit ) { $words = explode( ' ', $string, ( $word_limit + 1 ) ); if ( count( $words ) > $word_limit ) { array_pop( $words ); } return implode( ' ', $words ); } function modify_excerpt( $excerpt, $entry ) { $label = "Read more"; $limit = 50; $excerpt = string_limit_words( $excerpt, $limit ) . '… '; $excerpt .= '<a href="' . get_permalink( $entry->ID ) . '"><span class="avia_iconbox_title">' . $label . '<span class="more-link-arrow"></span></span></a>'; return $excerpt; } // Use custom excerpt for Blogposts for grid layout add_filter( "avf_post_slider_entry_excerpt", function ( $excerpt, $prepare_excerpt, $permalink, $entry, $class ) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = $custom_excerpt; } return modify_excerpt( $excerpt, $entry ); }, 10, 5 ); // Use custom excerpt for Blogposts in all layout except grid add_filter( 'get_the_excerpt', function ( $excerpt, $entry ) { $custom_excerpt = get_field( 'the_project', $entry->ID ); if ( $custom_excerpt ) { $excerpt = $custom_excerpt; } return modify_excerpt( $excerpt, $entry ); }, 10, 2 );
Thanks again everyone for all your help.
Dominic
January 7, 2023 at 7:41 pm #1377955Hi,
Glad to hear that you have this sorted out, and thanks for sharing your solution if you have any further questions please create a new thread and we will gladly try to help you. Thank you for using Enfold.Best regards,
Mike -
AuthorPosts
- The topic ‘Using a custom field as excerpt’ is closed to new replies.