[wp-trac] [WordPress Trac] #5857: an object's terms should be positionable

WordPress Trac wp-trac at lists.automattic.com
Wed Jul 27 05:27:02 UTC 2011


#5857: an object's terms should be positionable
-------------------------------------------+---------------------
 Reporter:  andy                           |       Owner:  ryan
     Type:  enhancement                    |      Status:  closed
 Priority:  normal                         |   Milestone:  2.5
Component:  General                        |     Version:
 Severity:  normal                         |  Resolution:  fixed
 Keywords:  taxonomy sort order has-patch  |
-------------------------------------------+---------------------
Changes (by lgedeon):

 * cc: luke.gedeon@… (added)


Comment:

 Based on the code above (which is now in core), here is the code to use
 term_order to sort tags. It can, of course, be adapted for other
 taxonomies.


 {{{
 /**
  * Sort post_tags by term_order
  *
  * @param array $terms array of objects to be replaced with sorted list
  * @param integer $id post id
  * @param string $taxonomy only 'post_tag' is changed.
  * @return array of objects
  */
 function plugin_get_the_ordered_terms ( $terms, $id, $taxonomy ) {
         if ( 'post_tag' != $taxonomy ) // only ordering tags for now but
 could add other taxonomies here.
                 return $terms;

         $terms = wp_cache_get($id, "{$taxonomy}_relationships_sorted");
         if ( false === $terms ) {
                 $terms = wp_get_object_terms( $id, $taxonomy, array(
 'orderby' => 'term_order' ) );
                 wp_cache_add($id, $terms, $taxonomy .
 '_relationships_sorted');
         }

         return $terms;
 }

 add_filter( 'get_the_terms', 'plugin_get_the_ordered_terms' , 10, 4 );

 /**
  * Adds sorting by term_order to post_tag by doing a partial register
 replacing
  * the default
  */
 function plugin_register_sorted_post_tag () {
         register_taxonomy( 'post_tag', 'post', array( 'sort' => true,
 'args' => array( 'orderby' => 'term_order' ) ) );
 }

 add_action( 'init', 'plugin_register_sorted_post_tag' );

 ?>
 }}}

 To use this, you will need to add tags in the order you want them to be
 and if you get them out of order you may have to remove some and add them
 back correctly. I might write a better UI later, but for now this at least
 works.

 I guess next actions would be to write a patch for object ordering, and to
 come up with a UI(s) for both tag-style and category-style term_ordering.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/5857#comment:4>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list