sectsect/wp-tag-order

Sort the tags manually in individual posts on wordpress.

Installs: 271

Dependents: 0

Suggesters: 0

Security: 0

Stars: 20

Watchers: 3

Forks: 3

Open Issues: 2

Type:wordpress-plugin


README

PHP Unit Tests PHPStan PHP Coding Standards Latest Stable Version

Order tags independently in each posts (not site-globally) on WordPress with simple Drag-and-Drop ↕︎ sortable feature.

68747470733a2f2f6769746875622d736563742e73332d61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f77702d7461672d6f726465722f77702d7461672d6f726465722e676966

Important

This plugin is NOT compatible with Gutenberg on WordPress 5.x. Consider using Classic Editor Plugin.

Get Started

  1. Clone this Repo into your wp-content/plugins directory.
$ cd /path-to-your/wp-content/plugins/
$ git clone git@github.com:sectsect/wp-tag-order.git
  1. Activate the plugin through the Plugins menu in WordPress.
  2. Go to Settings -> WP Tag Order page to select which taxonomies to enable ordering for.

Features

  • Support post_tag and non-hierarchical taxonomy.
  • Support multiple non-hierarchical taxonomies in a post-type.
  • Support Multisite.

Notes

  • When creating a new post, you need to save it once to enable tag ordering.
  • To apply ordering to existing posts, "Add and Remove" any tag once.
  • To bulk-update multiple posts at once, go to Settings -> WP Tag Order page and click 'Apply' under the Advanced Settings.
  • Tested on WordPress v6.3.1.

Requirements

  • WordPress 5.6+
  • PHP 8.0+

APIs

Function Description
get_the_tags_ordered() Based on get_the_tags() - Codex
get_the_terms_ordered() Based on get_the_terms() - Codex
get_the_tag_list_ordered() Based on get_the_tag_list() - Codex
get_the_term_list_ordered() Based on get_the_term_list() - Codex
the_tags_ordered() Based on the_tags() - Codex
the_terms_ordered() Based on the_terms() - Codex

Usage Example

get_the_tags_ordered()

<?php
$terms = get_the_tags_ordered();
if ( $terms && ! is_wp_error( $terms ) ) :
?>
<ul>
    <?php foreach ( $terms as $term ) : ?>
        <li>
            <a href="<?php echo get_term_link( $term->slug, 'post_tag' ); ?>">
                <?php echo $term->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

get_the_terms_ordered()

<?php
$terms = get_the_terms_ordered( $post->ID, 'post_tag' );
if ( $terms && ! is_wp_error( $terms ) ) :
?>
<ul>
    <?php foreach ( $terms as $term ) : ?>
        <li>
            <a href="<?php echo get_term_link( $term->slug, 'post_tag' ); ?>">
                <?php echo $term->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

get_the_tag_list_ordered()

<?php echo get_the_tag_list_ordered(); ?>

get_the_term_list_ordered()

<?php echo get_the_term_list_ordered( $post->ID, 'post_tag' ); ?>

the_tags_ordered()

<?php the_tags_ordered(); ?>

the_terms_ordered()

<?php the_terms_ordered( $post->ID, 'post_tag' ); ?>

For Developers

  • The ordered tag data is serialized and stored in the wp_postmeta table under keys like wp-tag-order-{taxonomy}.

    meta_id post_id meta_key meta_value
    19 7 wp-tag-order-post_tag s:91:"a:7:{i:0;s:1:"7";i:1;s:1:"5";i:2;s:2:"10";i:3;s:1:"4";i:4;s:1:"6";i:5;s:1:"8";i:6;s:1:"9";}";
  • This Plugin does not hosting on the wordpress.org repo in order to prevent a flood of support requests from wide audience. Your feedback is welcome.

Change log

See CHANGELOG file.

License

See LICENSE file.

✌️

A little project by @sectsect