Site logo

Archived topic

Modify archive description

5 replies · Started by Elías Gómez on September 16, 2021

Viewing posts 1–6 of 6

Hello! I want to filter the description of a term when it's shown in its archive page. But as I can see, you use your own function generate_do_archive_description() (and term_description() inside it) instead of the native one get_the_archive_description().

The native one apply the hook filter get_the_archive_description, so we can hook in it and modify the description. But as you don't use the native function or filter, I can't do that :(

Why you do this way? You just need to change term_description() to get_the_archive_description(), that in fact uses the first one if the archive is for a term).

How can I do this? I can only think on remove_action for your function and call get_the_archive_description() from my own function. Is that correct?

Thanks.

Hi there,

Why you do this way? You just need to change term_description() to get_the_archive_description(), that in fact uses the first one if the archive is for a term).

It's almost the same thing.

get_the_archive_description() actually calls term_description() inside its function. You can check the source here - https://developer.wordpress.org/reference/functions/get_the_archive_description/#source

While term_description() is the base function that pulls from the archive description field.
https://developer.wordpress.org/reference/functions/term_description/#source

Tom skipped the default so he can customize the HTML a bit - https://github.com/tomusborne/generatepress/blob/b60b853630da6d9015722da903e53c8064148b0a/inc/structure/archives.php#L94-L117

But yeah, if you really must remove it go with this.
remove_action( 'generate_after_archive_title', 'generate_do_archive_description' );

Hello.

It’s almost the same thing.

Yes, almost. Because it does not apply the filters, that is what I'm poiting.

get_the_archive_description() actually calls term_description() inside its function. You can check the source here – https://developer.wordpress.org/reference/functions/get_the_archive_description/#source

Yes, I explained that.
"change term_description() to get_the_archive_description(), that in fact uses the first one if the archive is for a term)"

Tom skipped the default so he can customize the HTML a bit

Yes, but why he uses term_description() instead of the general one get_the_archive_description(), that applies the filters? He can do the same, as that function is a 'wrapper' that includes term_description() but also applies the filters.

I thought that GeneratePress followed best practices and that's why I bought GP Premium. Prevent a user to use the WordPress native hooks is not a good practice. And this support reply is neither at the expected level.

Hi there,

Looking at this, it's likely that term_description() was used so we could split up the HTML a bit and have more overall control.

We'll take a look to see if we can achieve the same HTML structure using get_the_archive_description(), as we would obviously prefer to use it due to the filter.

Thanks!

Hi Tom.

Both functions return a string. Maybe get_the_archive_description() is a little less efficient because it checks first if it is an author or post type archive, but then it runs term_description() (and finally returns the string BUT filtered).

In the archives.php file, the HTML structure is generated AFTER getting the description, it's not related with that.


Thanks!

Thanks! Appreciate the feedback :)

This archived topic is closed to new replies.