Description
The plugin allows to highlight the CPT in the same way as would the WordPress core functionality for posts.
You can highlight new content created for your CPT.
It is also possible to highlight the content quickly thanks to quick edit and bulk actions.
The sticky checkbox is available in the block editor, in the classic editor, in quick edit and in bulk edit, for every public custom post type.
Sticky items are stored in the core sticky_posts option, exactly like sticky posts: is_sticky() works out of the box.
Start example
$args = array(
'post_type' => ['project'],
'post_status' => 'publish',
'posts_per_page' => -1,
'post__in' => get_option( 'sticky_posts' )
);
$stickyProject = new WP_Query( $args );
Hook available
add_filter( 'sticky_cpt_add_cpt' , 'add_cpt' );
function add_cpt( $post_types ) {
$post_types['newcpt'] = 'newcpt';
return $post_types;
}
Installation
- Upload the plugin files to the
/wp-content/plugins/sticky-cptdirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the ‘Plugins’ screen in WordPress
FAQ
-
Does my custom post type need the `custom-fields` support?
-
No. Since 3.0.0 the block editor uses the native
stickyfield of the REST API. Your custom post type only needsshow_in_restto use the block editor. -
Who can stick a content?
-
Users who can both publish and edit others’ contents of the custom post type, the same rule WordPress applies to posts.
-
I was reading the `sticky_value_cpt` post meta, what should I do?
-
This meta was removed in 3.0.0. Use
is_sticky( $post_id )orget_option( 'sticky_posts' )instead. -
How are sticky contents synchronized between Polylang translations?
-
Enable “Sticky posts” in the Polylang synchronization settings. Until 2.0.0 the sticky state was carried by a custom field, so it followed the “Custom fields” synchronization. Since 3.0.0 it only follows the “Sticky posts” synchronization.
-
Known issue with Polylang: a bulk edit unsticks translated contents
-
When the Polylang “Sticky posts” synchronization is enabled, a bulk edit that leaves the “Sticky” field on “No Change” unsticks the edited contents and their translations. This comes from Polylang (observed with Polylang 3.8.10) and also affects regular posts, with or without this plugin. Until it is fixed in Polylang, select “Sticky” explicitly in the bulk edit form when all the selected contents are sticky, or stick them again afterwards.
Reviews
Contributors & Developers
“Sticky CPT” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Sticky CPT” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
3.0.0
- Rewrite: the sticky state now relies on the native
stickyREST field, thecustom-fieldssupport is no longer required for the block editor. - Breaking: the
sticky_value_cptpost meta is removed and deleted on update. Useis_sticky()or thesticky_postsoption. - Breaking: with Polylang, the sticky state no longer follows the “Custom fields” synchronization. Enable the “Sticky posts” synchronization instead.
- Security: only users allowed to publish and edit others’ contents of the post type can stick or unstick a content.
- Fix: a sticky content is no longer unstuck when it is saved from the block editor with meta boxes, or from quick edit on hierarchical post types.
- Fix: duplicated IDs in the
sticky_postsoption and wrong sticky counter. - Fix: stray text printed in the classic editor footer.
- Performance: the sticky counter of the list screen no longer loads every ID of the post type.
- Block editor script migrated to
wp.editor.PluginPostStatusInfo. - Requires WordPress 6.6 and PHP 8.2. Tested with WordPress 7.1.
2.0.0
- 19 march 2020
- Gutenberg compatibility
1.0.1
- 04 july 2017
- Add contributor Whodunit and Check compatibility WordPress 4.8
1.0.0
- 22 oct 2016
- Initial release \o/


