WordPress.org

Make WordPress Core

Ticket #34491: 34491.patch

File 34491.patch, 6.3 KB (added by Chouby, 6 years ago)
  • src/wp-includes/class-wp.php

     
    308308                        if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) )
    309309                                $this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] );
    310310
    311                 // Don't allow non-public taxonomies to be queried from the front-end.
     311                // Don't allow non-publicly queryable taxonomies to be queried from the front-end.
    312312                if ( ! is_admin() ) {
    313                         foreach ( get_taxonomies( array( 'public' => false ), 'objects' ) as $taxonomy => $t ) {
     313                        foreach ( get_taxonomies( array( 'publicly_queryable' => false ), 'objects' ) as $taxonomy => $t ) {
    314314                                /*
    315315                                 * Disallow when set to the 'taxonomy' query var.
    316                                  * Non-public taxonomies cannot register custom query vars. See register_taxonomy().
     316                                 * Non-publicly queryable taxonomies cannot register custom query vars. See register_taxonomy().
    317317                                 */
    318318                                if ( isset( $this->query_vars['taxonomy'] ) && $taxonomy === $this->query_vars['taxonomy'] ) {
    319319                                        unset( $this->query_vars['taxonomy'], $this->query_vars['term'] );
  • src/wp-includes/taxonomy-functions.php

     
    289289 *                                                taxonomies. See accepted values in get_taxonomy_labels().
    290290 *                                                Default empty array.
    291291 *     @type string        $description           A short descriptive summary of what the taxonomy is for. Default empty.
    292  *     @type bool          $public                Whether the taxonomy is publicly queryable. Default true.
     292 *     @type bool          $public                Whether a taxonomy is intended for use publicly either via
     293 *                                                the admin interface or by front-end users. While the default settings
     294 *                                                of `$publicly_queryable`, `$show_ui`, and `$show_in_nav_menus`
     295 *                                                are inherited from `$public`, each does not rely on this relationship
     296 *                                                and controls a very specific intention (default true).
     297 *     @type bool          $publicly_queryable    Whether the taxonomy is publicly queryable.
     298 *                                                If not set, the default is inherited from `$public`
    293299 *     @type bool          $hierarchical          Whether the taxonomy is hierarchical. Default false.
    294300 *     @type bool          $show_ui               Whether to generate and allow a UI for managing terms in this taxonomy in
    295301 *                                                the admin. If not set, the default is inherited from `$public`
     
    363369                'labels'                => array(),
    364370                'description'           => '',
    365371                'public'                => true,
     372                'publicly_queryable'    => null,
    366373                'hierarchical'          => false,
    367374                'show_ui'               => null,
    368375                'show_in_menu'          => null,
     
    384391                return new WP_Error( 'taxonomy_length_invalid', __( 'Taxonomy names must be between 1 and 32 characters in length.' ) );
    385392        }
    386393
    387         if ( false !== $args['query_var'] && false !== $args['public'] && ! empty( $wp ) ) {
     394        // If not set, default to the setting for public.
     395        if ( null === $args['publicly_queryable'] ) {
     396                $args['publicly_queryable'] = $args['public'];
     397        }
     398
     399        if ( false !== $args['query_var'] && false !== $args['publicly_queryable'] && ! empty( $wp ) ) {
    388400                if ( true === $args['query_var'] )
    389401                        $args['query_var'] = $taxonomy;
    390402                else
  • tests/phpunit/includes/utils.php

     
    357357                unset( $GLOBALS[$v] );
    358358
    359359        foreach ( get_taxonomies( array() , 'objects' ) as $t ) {
    360                 if ( $t->public && ! empty( $t->query_var ) )
     360                if ( $t->publicly_queryable && ! empty( $t->query_var ) )
    361361                        $GLOBALS['wp']->add_query_var( $t->query_var );
    362362        }
    363363
     
    398398 */
    399399function benchmark_pcre_backtracking( $pattern, $subject, $strategy ) {
    400400        $saved_config = ini_get( 'pcre.backtrack_limit' );
    401        
     401
    402402        // Attempt to prevent PHP crashes.  Adjust these lower when needed.
    403403        if ( version_compare( phpversion(), '5.4.8', '>' ) ) {
    404404                $limit = 1000000;
     
    410410        for( $i = 4; $i <= $limit; $i *= 2 ) {
    411411
    412412                ini_set( 'pcre.backtrack_limit', $i );
    413                
     413
    414414                switch( $strategy ) {
    415415                case 'split':
    416416                        preg_split( $pattern, $subject );
  • tests/phpunit/tests/taxonomy.php

     
    446446        /**
    447447         * @ticket 21949
    448448         */
    449         public function test_nonpublic_taxonomy_should_not_be_queryable_using_taxname_query_var() {
     449        public function test_nonpublicly_queryable_taxonomy_should_not_be_queryable_using_taxname_query_var() {
    450450                register_taxonomy( 'wptests_tax', 'post', array(
    451                         'public' => false,
     451                        'publicly_queryable' => false,
    452452                ) );
    453453
    454454                $t = self::factory()->term->create_and_get( array(
     
    466466        /**
    467467         * @ticket 21949
    468468         */
    469         public function test_it_should_be_possible_to_register_a_query_var_that_matches_the_name_of_a_nonpublic_taxonomy() {
     469        public function test_it_should_be_possible_to_register_a_query_var_that_matches_the_name_of_a_nonpublicly_queryable_taxonomy() {
    470470                global $wp;
    471471
    472472                register_taxonomy( 'wptests_tax', 'post', array(
    473                         'public' => false,
     473                        'publicly_queryable' => false,
    474474                ) );
    475475                $t = $this->factory->term->create_and_get( array(
    476476                        'taxonomy' => 'wptests_tax',
     
    501501        /**
    502502         * @ticket 21949
    503503         */
    504         public function test_nonpublic_taxonomy_should_not_be_queryable_using_taxonomy_and_term_vars() {
     504        public function test_nonpublicly_queryable_taxonomy_should_not_be_queryable_using_taxonomy_and_term_vars() {
    505505                register_taxonomy( 'wptests_tax', 'post', array(
    506                         'public' => false,
     506                        'publicly_queryable' => false,
    507507                ) );
    508508
    509509                $t = self::factory()->term->create_and_get( array(