Make WordPress Core

Changes between Initial Version and Version 1 of Ticket #9547, comment 33


Ignore:
Timestamp:
06/16/2014 08:36:57 PM (11 years ago)
Author:
simonwheatley
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #9547, comment 33

    initial v1  
    77Refreshing and so forth aside: how would you like to tackle this? I can see either:
    88
    9 '''Option 1.''' Backwards compatibility: Check the third argument in `get_the_term_list()` and `the_terms()` to see if it's a string (treat the arguments as "legacy format", with the sixth argument as the `$args` array) and if the third argument is an array, assume the author is new school and interpret this as the `$args` argument.
     9'''Option 1.''' Backwards compatibility: Check the third argument in `get_the_term_list()` and `the_terms()` to see if it's a string (treat the arguments as "legacy format", with the sixth argument as the `$args` array) and if the third argument is an array, assume the author is new school and interpret this as the `$args` argument. Something like:
    1010
    11 '''Option 2.''' New way or the highway: Check if the third argument is a string, and if it is then call `_doing_it_wrong` but otherwise just drop the argument.
     11{{{
     12/**
     13 * Retrieve a post's terms as a list with specified format.
     14 *
     15 * The following information has to do with additional arguments in the $args parameter:
     16 *
     17 * 'before' string Optional. Before list.
     18 * 'sep'    string Optional. Separate items using this.
     19 * 'after'  string Optional. After list.
     20 *
     21 * @since 2.5.0
     22 *
     23 * @see wp_get_object_terms() for reference on the $args param
     24 *
     25 * @param int $id Post ID.
     26 * @param string $taxonomy Taxonomy name.
     27 * @param array $args Accepts the same arguments as the $args param for wp_get_object_terms,
     28                      as well as some additions listed above.
     29 * @return string|bool|WP_Error A list of terms on success, false or WP_Error on failure.
     30 */
     31function get_the_term_list( $id, $taxonomy, $args = array(), $deprecated_1 = '', $deprecated_2 = '', $deprecated_3 = array() ) {
     32        if ( is_string( $args ) ) {
     33                _doing_it_wrong( __FUNCTION__, sprintf( __( 'get_the_term_list expects the third argument to be a $args array, you can specify $before, $sep, and $after in the array.' ), '4.0' );
     34                $before = $args;
     35                $sep    = $deprecated_1;
     36                $after  = $deprecated_2;
     37                $args   = $deprecated_3;
     38        } else {
     39                $before = isset( $args[ 'before' ] ) ? $args[ 'before' ] : '';
     40                $sep    = isset( $args[ 'sep' ]    ) ? $args[ 'sep' ]    : '';
     41                $after  = isset( $args[ 'after' ]  ) ? $args[ 'after' ]  : '';
     42        }
     43}}}
     44
     45'''Option 2.''' New way or the highway: Check if the third argument is a string, and if it is then call `_doing_it_wrong` but otherwise just drop the argument. Something like:
     46
     47{{{
     48/**
     49 * Display the terms in a list.
     50 *
     51 * The following information has to do with additional arguments in the $args parameter:
     52 *
     53 * 'before' string Optional. Before list.
     54 * 'sep'    string Optional. Separate items using this.
     55 * 'after'  string Optional. After list.
     56 *
     57 * @since 2.5.0
     58 *
     59 * @param int $id Post ID.
     60 * @param string $taxonomy Taxonomy name.
     61 * @param array $args Accepts the same arguments as the $args param for wp_get_object_terms,
     62                      as well as some additions listed above.
     63 * @return null|bool False on WordPress error. Returns null when displaying.
     64 */
     65function the_terms( $id, $taxonomy, $args = array() ) {
     66        if ( is_string( $args ) ) {
     67                _doing_it_wrong( __FUNCTION__, sprintf( __( 'the_terms expects the third argument to be a $args array, you can specify $before, $sep, and $after in the array.' ), '4.0' );
     68        }
     69}}}
     70
     71Having coded them out in outline, I vote for not making the change or going for Option 2, to keep the code simpler.