Title: Bracket Post Order
Author: bracket
Published: <strong>16 Şubat 2026</strong>
Last modified: 8 Nisan 2026

---

Eklentilerde ara

![](https://ps.w.org/bracket-post-order/assets/icon.svg?rev=3462862)

# Bracket Post Order

 [bracket](https://profiles.wordpress.org/bracketdev/) tarafından

[İndir](https://downloads.wordpress.org/plugin/bracket-post-order.1.2.5.zip)

 * [Detaylar](https://tr.wordpress.org/plugins/bracket-post-order/#description)
 * [İncelemeler](https://tr.wordpress.org/plugins/bracket-post-order/#reviews)
 *  [Kurulum](https://tr.wordpress.org/plugins/bracket-post-order/#installation)
 * [Geliştirme](https://tr.wordpress.org/plugins/bracket-post-order/#developers)

 [Destek](https://wordpress.org/support/plugin/bracket-post-order/)

## Açıklama

**Bracket Post Order** gives you complete control over how your content is sorted—
directly from the native WordPress admin screens you already use. No new interfaces
to learn, no separate reorder pages. Just drag and drop.

A key feature is **per-term post ordering**: the ability to define a different post
order for each individual category, tag, or custom taxonomy term. Show your products
in one order on “Summer Collection” and a completely different order on “Best Sellers”—
each term maintains its own independent sort.

#### Three Types of Ordering

**1. Global Post Ordering**
 Drag-and-drop to reorder posts, pages, and custom post
types on the standard admin list table. The new order is saved to `menu_order` and
automatically applied on the front end.

**2. Per-Term Post Ordering**
 Filter your admin list by a category or taxonomy 
term, and the interface switches to per-term mode. Drag posts into the order you
want for _that specific term_. Assign the same post to multiple categories — each
one keeps its own sort. New posts added to a term automatically appear first (newest
on top).

**3. Taxonomy Term Ordering**
 Reorder categories, tags, and custom taxonomy terms
themselves via drag-and-drop on the native `edit-tags.php` screen. The new term 
order is applied to `get_terms()` queries and navigation menus on the front end.

#### Key Features

 * **Reset Order** — Reset post order by date or title with one click. Most requested
   feature across all ordering plugins.
 * **Undo** — “Order saved. [Undo]” link appears for 8 seconds after every reorder.
   Click to revert instantly.
 * **Mobile/Touch Support** — Full touch drag-and-drop on phones and tablets via
   jQuery UI Touch Punch.
 * **Keyboard Accessibility** — Tab to a row, Enter to activate, Arrow keys to move,
   Enter to save, Escape to cancel. WCAG compliant.
 * **Order Column** — “#” column shows each post’s position number at a glance.
 * **WPML & Polylang Support** — Per-term ordering works correctly across languages.
 * **Admin Bar Indicator** — Shows current ordering mode (Global or Per-Term) in
   the admin bar.
 * **Settings Link** — Quick access from the Plugins page.

#### How It Works

 1. Go to **Settings > Bracket Post Order**
 2. Toggle on the post types you want to reorder
 3. Toggle on taxonomies for per-term post ordering
 4. Toggle on taxonomies for term reordering
 5. Visit your admin list pages and start dragging

Changes save automatically via AJAX — no page refresh needed.

#### Built for WordPress, Not Against It

 * Works directly inside native admin list tables (`edit.php` and `edit-tags.php`)
 * Uses standard `menu_order` for global ordering — compatible with any theme
 * Uses `term_order` for taxonomy terms — the same column WordPress defines
 * Per-term order stored as term meta — clean, portable, conflict-free
 * Front-end queries are modified transparently via `pre_get_posts` and `posts_clauses`
 * Explicit `orderby` parameters (date, title, etc.) are never overridden

#### Works With

 * Any public custom post type (portfolios, team members, testimonials, events, 
   FAQs, services)
 * WooCommerce products and product categories
 * Any registered taxonomy with a UI
 * Page builders that use standard `WP_Query` (Elementor, Divi, Beaver Builder)
 * Themes that follow WordPress template hierarchy
 * WPML and Polylang multilingual plugins

#### For Developers

Bracket Post Order provides hooks so you can extend or control its behavior:

    ```
    // Filter: skip per-term ordering for a specific query
    add_filter( 'bracket_po_apply_term_post_order', function( $apply, $term_id, $query ) {
        // Return false to skip
        return $apply;
    }, 10, 3 );

    // Filter: modify the retrieved term post order
    add_filter( 'bracket_po_get_term_post_order', function( $ordered_ids, $term_id ) {
        return $ordered_ids;
    }, 10, 2 );

    // Actions: fired after order is saved via drag-and-drop
    do_action( 'bracket_po_global_order_updated', $post_ids );
    do_action( 'bracket_po_term_post_order_updated', $term_id, $post_ids );
    do_action( 'bracket_po_term_order_updated', $term_ids );

    // Actions: fired after order is reset
    do_action( 'bracket_po_global_order_reset', $post_type, $sort_by );
    do_action( 'bracket_po_term_post_order_reset', $term_id );
    ```

To apply per-term order in custom queries, set `orderby` to `menu_order` and include
a `tax_query` with a single term:

    ```
    $query = new WP_Query( [
        'post_type' => 'product',
        'orderby'   => 'menu_order',
        'order'     => 'ASC',
        'tax_query' => [ [
            'taxonomy' => 'product-category',
            'field'    => 'term_id',
            'terms'    => 42,
        ] ],
    ] );
    ```

The plugin will automatically apply the saved per-term order via `FIELD()` SQL —
ordered posts appear first, new/unordered posts appear last (sorted by date, newest
on top).

## Yükleme

#### Automatic Installation

 1. In your WordPress admin, go to **Plugins > Add New**
 2. Search for “Bracket Post Order”
 3. Click **Install Now**, then **Activate**
 4. Go to **Settings > Bracket Post Order** to configure

#### Manual Installation

 1. Download the plugin ZIP file
 2. Upload the `bracket-post-order` folder to `/wp-content/plugins/`
 3. Activate the plugin through the **Plugins** menu
 4. Go to **Settings > Bracket Post Order** to configure

#### Configuration

 1. Navigate to **Settings > Bracket Post Order**
 2. In the **Post Types** card, toggle on each post type you want to reorder
 3. In the **Per-Term Post Ordering** card, toggle on taxonomies (taxonomies appear
    automatically based on your enabled post types)
 4. In the **Term Ordering** card, toggle on taxonomies whose terms you want to reorder
 5. Click **Save Changes**

That’s it. Visit any enabled post type list and start dragging rows.

## SSS

### Does this work with custom post types?

Yes. Any post type with `show_ui => true` appears in the settings. This includes
WooCommerce products, portfolio items, team members, testimonials, events, and any
custom post type registered by your theme or plugins.

### How does per-term ordering work?

When you filter the admin post list by a taxonomy term (e.g., selecting a specific
category from the dropdown), the plugin switches to per-term mode. An info notice
appears confirming the mode. Drag posts into the order you want — that order is 
saved exclusively for that term.

The same post can belong to multiple terms, and each term maintains its own independent
order.

### Does the custom order appear on the front end?

Yes. The plugin hooks into `pre_get_posts` and `posts_clauses` to automatically 
apply the saved order to front-end queries. For global ordering, it sets `orderby
=> menu_order`. For per-term ordering, it modifies the SQL `ORDER BY` clause using`
FIELD()` so your saved order is respected while keeping pagination and other query
parameters intact.

### What if I set an explicit orderby in my query?

The plugin never overrides explicit `orderby` parameters other than `menu_order`.
If your query uses `orderby => date`, `title`, `meta_value`, or anything else, the
plugin leaves it alone. This is by design — your code always takes priority.

### Does it work with WooCommerce?

Yes. Enable the “Products” post type and relevant product taxonomies in the settings.
The plugin works with WooCommerce product categories and tags for both global and
per-term ordering.

### Can I reorder taxonomy terms (categories, tags)?

Yes. Enable term ordering for any taxonomy in the settings. Then go to that taxonomy’s
admin page (e.g., Posts > Categories) and drag terms into your preferred order. 
The new order is applied to `get_terms()` queries on the front end.

### How do I reset the order?

Click the “Reset Order” button above the post list table. Choose a sort method (
Date newest/oldest, Title A-Z/Z-A) and confirm. For per-term mode, resetting removes
the custom order for that term.

### Does it work on mobile/tablet?

Yes. Version 1.1.0 includes full touch support. Drag-and-drop works on phones and
tablets with properly sized touch targets.

### Is it accessible via keyboard?

Yes. Tab to any row, press Enter or Space to activate reorder mode, use Arrow Up/
Down to move the row, Enter to save, or Escape to cancel. Screen reader announcements
are provided via ARIA live regions.

### Does it work with WPML or Polylang?

Yes. The plugin automatically detects WPML and Polylang and maps per-term ordering
to work correctly across languages.

### Does clicking a column header disable drag-and-drop?

Yes. When you click a column header to sort by title, date, etc., the plugin detects
the `orderby` URL parameter and disables drag-and-drop. Removing the sort (clicking
the post type menu link again) re-enables it.

### Does it affect search results?

No. The plugin only applies its ordering to queries for enabled post types that 
don’t have an explicit `orderby` set. WordPress search queries use relevance-based
sorting, which the plugin does not interfere with.

### Is it compatible with page builders?

Yes. Elementor, Divi, Beaver Builder, and other page builders that use standard `
WP_Query` will respect the custom order. If the builder lets you set `orderby` to`
menu_order`, the per-term ordering also works automatically.

### What happens when I add a new post to a category that has a custom order?

New posts that aren’t part of the saved per-term order automatically appear last(
sorted by date, newest on top). You can then go to the admin, filter by that term,
and drag the new post into position.

### Is it compatible with Simple Custom Post Order (SCPO)?

The plugin detects SCPO and displays an admin notice recommending deactivation. 
If both are active, Bracket Post Order dequeues SCPO’s scripts on pages where it
is active to prevent conflicts. For best results, deactivate SCPO before using this
plugin.

### Does it support multisite?

Yes. The plugin works on individual sites within a multisite network. Each site 
maintains its own settings and post order.

## İncelemeler

Bu eklenti için herhangi bir değerlendirme bulunmuyor.

## Katkıda Bulunanlar ve Geliştiriciler

“Bracket Post Order” açık kaynaklı yazılımdır. Aşağıdaki kişiler bu eklentiye katkıda
bulunmuşlardır.

Katkıda bulunanlar

 *   [ bracket ](https://profiles.wordpress.org/bracketdev/)
 *   [ bracket ](https://profiles.wordpress.org/bracket/)

[“Bracket Post Order” eklentisini dilinize çevirin.](https://translate.wordpress.org/projects/wp-plugins/bracket-post-order)

### Geliştirmeyle ilgilenir misiniz?

[Kodu görüntüleyin](https://plugins.trac.wordpress.org/browser/bracket-post-order/),
[SVN deposuna](https://plugins.svn.wordpress.org/bracket-post-order/) göz atın ya
da [RSS](https://plugins.trac.wordpress.org/log/bracket-post-order/?limit=100&mode=stop_on_copy&format=rss)
ile [geliştirme günlüğüne](https://plugins.trac.wordpress.org/log/bracket-post-order/)
abone olun.

## Değişiklik Kaydı

#### 1.2.5

 * Fixed: Uninstall now removes the bracket_po_db_version option to prevent schema
   migration being skipped on reinstall
 * Fixed: Deleted or trashed posts are now cleaned from per-term order meta, preventing
   stale data accumulation
 * Fixed: Global order save now validates that posts belong to an enabled post type
 * Fixed: Term order save now validates that terms belong to an enabled taxonomy
 * Fixed: Term order reset now validates the term’s taxonomy is enabled before deleting
   order data
 * Fixed: Strict comparison for term order deduplication zero-check
 * Fixed: WPML compatibility no longer passes false to translation filter for deleted
   posts
 * Improved: OR tax_query relation check now short-circuits before unnecessary term
   resolution

#### 1.2.4

 * Fixed: Fatal SQL error when term_order column is missing from wp_terms — now 
   gracefully falls back
 * Fixed: Global reset now also clears per-term ordering data to prevent stale order
   arrays
 * Fixed: Per-term save no longer discards posts on other pages when list is paginated
 * Fixed: SCPO conflict detection now dequeues the correct script handle (scporderjs)
 * Fixed: sanitize_text_field before parse_str could corrupt serialized order data
   on some servers
 * Fixed: Duplicate menu_order values now resolved to unique sequential values during
   save
 * Fixed: New posts added to an ordered term now appear last (after ordered posts)
   instead of first
 * Fixed: Refresh order no longer runs during AJAX requests, preventing mid-drag
   corruption
 * Fixed: Autosaves and revisions no longer trigger unnecessary menu_order re-sequencing
 * Fixed: Re-sequence sort is now deterministic with ID-based tiebreaker
 * Fixed: WPML per-term ordering now uses actual taxonomy instead of hardcoded ‘
   category’
 * Fixed: PHP usort stable tiebreaker for term_order on PHP < 8.0
 * Fixed: Keyboard Escape handler maintains focus after cancel
 * Improved: term_order column auto-created on admin_init if missing (handles FTP
   installs)
 * Improved: Admin notice shown if ALTER TABLE fails during activation
 * Improved: REST API queries are no longer affected by the plugin’s ordering hooks
 * Improved: Per-term save validates that term belongs to an enabled taxonomy

#### 1.2.3

 * Fixed: New posts added to a term with per-term ordering now appear first instead
   of last

#### 1.1.0

 * New: Settings link on the Plugins page for quick access
 * New: Admin bar indicator showing current ordering mode (Global or Per-Term)
 * New: Order position “#” column on admin post list tables
 * New: Reset Order button with sort options (Date DESC/ASC, Title A-Z/Z-A) for 
   both global and per-term modes
 * New: Undo last reorder — “Order saved. [Undo]” link with 8-second timeout
 * New: Green highlight animation on rows after save
 * New: Drag handle (vertical dots) visible on row hover
 * New: Enhanced sortable placeholder and helper styles
 * New: 800ms debounce on AJAX saves to prevent rapid drag spam
 * New: Mobile/touch drag-and-drop support via jQuery UI Touch Punch
 * New: Touch-friendly CSS — 48px min-height targets on coarse pointer devices
 * New: Full keyboard accessibility — Enter/Space to activate, Arrow keys to move,
   Enter to save, Escape to cancel
 * New: ARIA live region for screen reader announcements (WCAG compliance)
 * New: WPML compatibility — per-term ordering works across languages
 * New: Polylang compatibility — per-term ordering works across languages
 * Performance: Optimized admin_init refresh — only recalculates menu_order when
   posts actually change (transient-based staleness detection)
 * Improved: Sortable helper has larger shadow and subtle scale
 * Improved: Focus ring styles for keyboard navigation
 * Updated: uninstall.php cleans up transients
 * Developer: New `bracket_po_global_order_reset` action
 * Developer: New `bracket_po_term_post_order_reset` action

#### 1.0.2

 * Fixed table layout during drag-and-drop on some environments
 * Improved first-time post ordering initialization
 * Auto-detection and repair of menu_order gaps

#### 1.0.1

 * Improved WordPress coding standards compliance
 * Settings page UX improvements
 * Minor code quality and compatibility fixes

#### 1.0.0

 * Initial release
 * Global post ordering via `menu_order` with drag-and-drop on admin list tables
 * Per-taxonomy-term post ordering — independent sort order for each category/tag/
   term
 * Taxonomy term ordering via drag-and-drop on `edit-tags.php`
 * Modern settings page with card layout and toggle switches
 * Dynamic taxonomy visibility — toggling a post type instantly shows its taxonomies
 * Transparent `WP_Query` integration via `pre_get_posts` and `posts_clauses`
 * Per-term ordering uses SQL `FIELD()` for native pagination support
 * Automatic conflict detection and script dequeuing for Simple Custom Post Order
 * Developer hooks: `bracket_po_apply_term_post_order`, `bracket_po_get_term_post_order`,`
   bracket_po_global_order_updated`, `bracket_po_term_post_order_updated`, `bracket_po_term_order_updated`
 * Clean uninstall — removes options and term meta on plugin deletion
 * Full internationalization support with `.pot` template

## Meta

 *  Sürüm **1.2.5**
 *  Son güncelleme **12 saat önce**
 *  Etkin kurulumlar **10dan fazla**
 *  WordPress sürümü ** 6.2 veya üstü **
 *  Test edilen sürüm **6.9.4**
 *  PHP sürümü ** 7.4 veya üstü **
 *  Dil
 * [English (US)](https://wordpress.org/plugins/bracket-post-order/)
 * Etiketler
 * [custom order](https://tr.wordpress.org/plugins/tags/custom-order/)[drag-and-drop](https://tr.wordpress.org/plugins/tags/drag-and-drop/)
   [post order](https://tr.wordpress.org/plugins/tags/post-order/)[reorder](https://tr.wordpress.org/plugins/tags/reorder/)
   [taxonomy order](https://tr.wordpress.org/plugins/tags/taxonomy-order/)
 *  [Gelişmiş görünüm](https://tr.wordpress.org/plugins/bracket-post-order/advanced/)

## Puanlar

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/bracket-post-order/reviews/#new-post)

[Tüm değerlendirmeleri görün](https://wordpress.org/support/plugin/bracket-post-order/reviews/)

## Katkıda bulunanlar

 *   [ bracket ](https://profiles.wordpress.org/bracketdev/)
 *   [ bracket ](https://profiles.wordpress.org/bracket/)

## Destek

Söyleyeceğiniz bir şey mi var? Yardım mı lazım?

 [Destek forumunu görüntüle](https://wordpress.org/support/plugin/bracket-post-order/)