{"id":304955,"date":"2026-05-05T10:00:09","date_gmt":"2026-05-05T10:00:09","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/term-order-per-post\/"},"modified":"2026-05-12T13:07:50","modified_gmt":"2026-05-12T13:07:50","slug":"whaze-term-order-for-posts","status":"publish","type":"plugin","link":"https:\/\/es-uy.wordpress.org\/plugins\/whaze-term-order-for-posts\/","author":15469386,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.0","stable_tag":"1.2.0","tested":"6.9.4","requires":"6.0","requires_php":"8.2","requires_plugins":null,"header_name":"Whaze Term Order for Posts","header_author":"J\u00e9r\u00f4me Buquet","header_description":"Order taxonomy terms individually per post, directly from the Gutenberg editor sidebar.","assets_banners_color":"091b33","last_updated":"2026-05-12 13:07:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/whaze\/whaze-term-order-for-posts","header_author_uri":"https:\/\/profiles.wordpress.org\/whaze\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":107,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"whaze","date":"2026-05-05 09:59:43"},"1.1.0":{"tag":"1.1.0","author":"whaze","date":"2026-05-11 13:03:13"},"1.2.0":{"tag":"1.2.0","author":"whaze","date":"2026-05-12 13:07:50"}},"upgrade_notice":{"1.2.0":"<p>Adds an opt-in auto-apply option. No database changes. Fully backward-compatible.<\/p>","1.1.0":"<p>Adds an admin settings page. No database changes. Fully backward-compatible.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3529899,"resolution":"128x128","location":"assets","locale":"","width":1024,"height":1024},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3529899,"resolution":"256x256","location":"assets","locale":"","width":1024,"height":1024}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3529916,"resolution":"1544x500","location":"assets","locale":"","width":1536,"height":1024},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3529916,"resolution":"772x250","location":"assets","locale":"","width":1536,"height":1024}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[148857,148076,1896,91,1901],"plugin_category":[57],"plugin_contributors":[261914],"plugin_business_model":[],"class_list":["post-304955","plugin","type-plugin","status-publish","hentry","plugin_tags-block-editor","plugin_tags-gutenberg","plugin_tags-order","plugin_tags-taxonomy","plugin_tags-terms","plugin_category-taxonomy","plugin_contributors-whaze","plugin_committers-whaze"],"banners":{"banner":"https:\/\/ps.w.org\/whaze-term-order-for-posts\/assets\/banner-772x250.png?rev=3529916","banner_2x":"https:\/\/ps.w.org\/whaze-term-order-for-posts\/assets\/banner-1544x500.png?rev=3529916","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/whaze-term-order-for-posts\/assets\/icon-128x128.png?rev=3529899","icon_2x":"https:\/\/ps.w.org\/whaze-term-order-for-posts\/assets\/icon-256x256.png?rev=3529899","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Whaze Term Order for Posts lets you enable per-post custom ordering of taxonomy terms directly from the Gutenberg editor sidebar. Configure which post types and taxonomies are managed via the admin settings page, or register them programmatically in code.<\/p>\n\n<p><strong>Admin settings page:<\/strong><\/p>\n\n<p>Go to <strong>Settings \u2192 Term Order for Posts<\/strong> to enable term ordering for any post type \/ taxonomy combination \u2014 no code required.<\/p>\n\n<p><strong>For developers (optional):<\/strong><\/p>\n\n<p>Register a post type \/ taxonomy combination programmatically:<\/p>\n\n<pre><code>add_action( 'init', function () {\n    whaze_term_order_for_posts_register( 'post', 'category' );\n    whaze_term_order_for_posts_register( 'movie', 'genre' );\n} );\n<\/code><\/pre>\n\n<p>Retrieve ordered terms in templates or REST:<\/p>\n\n<pre><code>$terms = whaze_term_order_for_posts_get_terms( get_the_ID(), 'category' );\n<\/code><\/pre>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Settings page to configure post type \/ taxonomy pairs \u2014 no code needed.<\/li>\n<li>Opt-in auto-apply: custom order applied automatically to native blocks, classic theme functions, and any code using <code>get_the_terms()<\/code> \u2014 no template changes required.<\/li>\n<li>Drag-and-drop reordering panel in the block editor sidebar.<\/li>\n<li>Order saved automatically with the post \u2014 no separate AJAX call.<\/li>\n<li>Falls back to default WordPress term order when no custom order is set.<\/li>\n<li>Unused order entries are cleaned up automatically when terms are removed.<\/li>\n<li>REST API field <code>term_order<\/code> for headless use cases.<\/li>\n<li>Fully translatable (i18n-ready).<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Term Order for Posts<\/strong> to enable term ordering for your post types and taxonomies.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20custom%20post%20types%20and%20taxonomies%3F\"><h3>Does this work with custom post types and taxonomies?<\/h3><\/dt>\n<dd><p>Yes. Select any registered post type and taxonomy in the settings page, or pass them to <code>whaze_term_order_for_posts_register()<\/code>.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20no%20order%20is%20defined%20for%20a%20post%3F\"><h3>What happens if no order is defined for a post?<\/h3><\/dt>\n<dd><p>whaze_term_order_for_posts_get_terms() falls back to the standard <code>wp_get_object_terms()<\/code> result \u2014 the plugin is completely transparent. The auto-apply option also has no effect when no custom order is stored.<\/p><\/dd>\n<dt id=\"what%20does%20the%20auto-apply%20option%20cover%3F\"><h3>What does the auto-apply option cover?<\/h3><\/dt>\n<dd><p>It hooks into <code>get_the_terms()<\/code>, which is called by native blocks (<code>core\/post-terms<\/code>), classic theme helpers (<code>the_category()<\/code>, <code>the_tags()<\/code>, <code>get_the_term_list()<\/code>, etc.), and any code that goes through that function. Direct calls to <code>wp_get_post_terms()<\/code> or <code>wp_get_object_terms()<\/code> are not affected \u2014 use <code>whaze_term_order_for_posts_get_terms()<\/code> for those.<\/p><\/dd>\n<dt id=\"is%20this%20multisite%20compatible%3F\"><h3>Is this multisite compatible?<\/h3><\/dt>\n<dd><p>Yes. The order is stored as post meta and is therefore scoped to each site in the network.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Add opt-in auto-apply option: enable custom term order automatically for native blocks, classic theme functions, and any code using <code>get_the_terms()<\/code> \u2014 no template changes required.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add admin settings page (Settings \u2192 Term Order for Posts) to configure post type \/ taxonomy pairs without writing code.<\/li>\n<li>Programmatic registrations via <code>whaze_term_order_for_posts_register()<\/code> remain fully supported and are shown as read-only in the settings page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Order taxonomy terms individually per post, directly from the Gutenberg editor sidebar.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/304955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=304955"}],"author":[{"embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/whaze"}],"wp:attachment":[{"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=304955"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=304955"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=304955"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=304955"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=304955"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-uy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=304955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}