custom-post-type-widgets icon indicating copy to clipboard operation
custom-post-type-widgets copied to clipboard

Archive widget uses wrong slug if has_archive is defined as a string

Open ykyu opened this issue 4 years ago • 1 comments

Currently the plugin uses the CPT's post type slug, but when defining the CPT, it is possible to assign a specific archive slug.

E.g. for post type "movie" a single movie would be at site.com/movie/the-lion-king, while a movie index or archive view might be at site.com/movielist/2020/12. The plugin currently would use site.com/movie/2020/12, which would 404.

The fix is simple. In /inc/widget-custom-post-type-archive.php

Find: $archive_name = ! empty( $type_obj->rewrite['slug'] ) ? $type_obj->rewrite['slug'] : $posttype;

Replace: $archive_name = is_string($type_obj->has_archive) ? $type_obj->has_archive : (! empty( $type_obj->rewrite['slug'] ) ? $type_obj->rewrite['slug'] : $posttype;);

ykyu avatar May 13 '21 22:05 ykyu

Just coming in to say thanks for this, and also @ykyu you have an extra semicolon as the 3rd-to-last character.

WillPresley avatar Mar 04 '22 17:03 WillPresley