Make WordPress Core

Ticket #42335: 42335.diff

File 42335.diff, 9.4 KB (added by munyagu, 7 years ago)

Add check return value from get_queried_object()

  • src/wp-includes/class-wp-query.php

     
    34273427
    34283428                $post_obj = $this->get_queried_object();
    34293429
    3430                 if ( in_array( (string) $post_obj->ID, $attachment ) ) {
    3431                         return true;
    3432                 } elseif ( in_array( $post_obj->post_title, $attachment ) ) {
    3433                         return true;
    3434                 } elseif ( in_array( $post_obj->post_name, $attachment ) ) {
    3435                         return true;
     3430                if ( $post_obj ) {
     3431                        if ( in_array( (string) $post_obj->ID, $attachment ) ) {
     3432                                return true;
     3433                        } elseif ( in_array( $post_obj->post_title, $attachment ) ) {
     3434                                return true;
     3435                        } elseif ( in_array( $post_obj->post_name, $attachment ) ) {
     3436                                return true;
     3437                        }
    34363438                }
     3439
    34373440                return false;
    34383441        }
    34393442
     
    34573460
    34583461                $author_obj = $this->get_queried_object();
    34593462
    3460                 $author = array_map( 'strval', (array) $author );
     3463                if ( $author_obj ) {
     3464                        $author = array_map( 'strval', (array) $author );
    34613465
    3462                 if ( in_array( (string) $author_obj->ID, $author ) )
    3463                         return true;
    3464                 elseif ( in_array( $author_obj->nickname, $author ) )
    3465                         return true;
    3466                 elseif ( in_array( $author_obj->user_nicename, $author ) )
    3467                         return true;
     3466                        if ( in_array( (string) $author_obj->ID, $author ) ) {
     3467                                return true;
     3468                        } elseif ( in_array( $author_obj->nickname, $author ) ) {
     3469                                return true;
     3470                        } elseif ( in_array( $author_obj->user_nicename, $author ) ) {
     3471                                return true;
     3472                        }
     3473                }
    34683474
    34693475                return false;
    34703476        }
     
    34893495
    34903496                $cat_obj = $this->get_queried_object();
    34913497
    3492                 $category = array_map( 'strval', (array) $category );
     3498                if ( $cat_obj ) {
     3499                        $category = array_map( 'strval', (array) $category );
    34933500
    3494                 if ( in_array( (string) $cat_obj->term_id, $category ) )
    3495                         return true;
    3496                 elseif ( in_array( $cat_obj->name, $category ) )
    3497                         return true;
    3498                 elseif ( in_array( $cat_obj->slug, $category ) )
    3499                         return true;
     3501                        if ( in_array( (string) $cat_obj->term_id, $category ) ) {
     3502                                return true;
     3503                        } elseif ( in_array( $cat_obj->name, $category ) ) {
     3504                                return true;
     3505                        } elseif ( in_array( $cat_obj->slug, $category ) ) {
     3506                                return true;
     3507                        }
     3508                }
    35003509
    35013510                return false;
    35023511        }
     
    35213530
    35223531                $tag_obj = $this->get_queried_object();
    35233532
    3524                 $tag = array_map( 'strval', (array) $tag );
     3533                if ( $tag_obj ) {
     3534                        $tag = array_map( 'strval', (array) $tag );
    35253535
    3526                 if ( in_array( (string) $tag_obj->term_id, $tag ) )
    3527                         return true;
    3528                 elseif ( in_array( $tag_obj->name, $tag ) )
    3529                         return true;
    3530                 elseif ( in_array( $tag_obj->slug, $tag ) )
    3531                         return true;
     3536                        if ( in_array( (string) $tag_obj->term_id, $tag ) ) {
     3537                                return true;
     3538                        } elseif ( in_array( $tag_obj->name, $tag ) ) {
     3539                                return true;
     3540                        } elseif ( in_array( $tag_obj->slug, $tag ) ) {
     3541                                return true;
     3542                        }
     3543                }
    35323544
    35333545                return false;
    35343546        }
     
    35613573                        return true;
    35623574
    35633575                $queried_object = $this->get_queried_object();
    3564                 $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy );
    3565                 $term_array = (array) $term;
    35663576
    3567                 // Check that the taxonomy matches.
    3568                 if ( ! ( isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ) ) )
    3569                         return false;
     3577                if ( $queried_object ) {
     3578                        $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy );
     3579                        $term_array = (array) $term;
    35703580
    3571                 // Only a Taxonomy provided.
    3572                 if ( empty( $term ) )
    3573                         return true;
     3581                        // Check that the taxonomy matches.
     3582                        if ( ! ( isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ) ) ) {
     3583                                return false;
     3584                        }
    35743585
    3575                 return isset( $queried_object->term_id ) &&
    3576                         count( array_intersect(
    3577                                 array( $queried_object->term_id, $queried_object->name, $queried_object->slug ),
    3578                                 $term_array
    3579                         ) );
     3586                        // Only a Taxonomy provided.
     3587                        if ( empty( $term ) ) {
     3588                                return true;
     3589                        }
     3590
     3591                        return isset( $queried_object->term_id ) &&
     3592                               count( array_intersect(
     3593                                       array( $queried_object->term_id, $queried_object->name, $queried_object->slug ),
     3594                                       $term_array
     3595                               ) );
     3596                }
     3597
     3598                return false;
    35803599        }
    35813600
    35823601        /**
     
    37233742
    37243743                $page_obj = $this->get_queried_object();
    37253744
    3726                 $page = array_map( 'strval', (array) $page );
     3745                if ( $page_obj ) {
     3746                        $page = array_map( 'strval', (array) $page );
    37273747
    3728                 if ( in_array( (string) $page_obj->ID, $page ) ) {
    3729                         return true;
    3730                 } elseif ( in_array( $page_obj->post_title, $page ) ) {
    3731                         return true;
    3732                 } elseif ( in_array( $page_obj->post_name, $page ) ) {
    3733                         return true;
    3734                 } else {
    3735                         foreach ( $page as $pagepath ) {
    3736                                 if ( ! strpos( $pagepath, '/' ) ) {
    3737                                         continue;
    3738                                 }
    3739                                 $pagepath_obj = get_page_by_path( $pagepath );
     3748                        if ( in_array( (string) $page_obj->ID, $page ) ) {
     3749                                return true;
     3750                        } elseif ( in_array( $page_obj->post_title, $page ) ) {
     3751                                return true;
     3752                        } elseif ( in_array( $page_obj->post_name, $page ) ) {
     3753                                return true;
     3754                        } else {
     3755                                foreach ( $page as $pagepath ) {
     3756                                        if ( ! strpos( $pagepath, '/' ) ) {
     3757                                                continue;
     3758                                        }
     3759                                        $pagepath_obj = get_page_by_path( $pagepath );
    37403760
    3741                                 if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) {
    3742                                         return true;
     3761                                        if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) {
     3762                                                return true;
     3763                                        }
    37433764                                }
    37443765                        }
    37453766                }
     
    38163837
    38173838                $post_obj = $this->get_queried_object();
    38183839
    3819                 $post = array_map( 'strval', (array) $post );
     3840                if ( $post_obj ) {
     3841                        $post = array_map( 'strval', (array) $post );
    38203842
    3821                 if ( in_array( (string) $post_obj->ID, $post ) ) {
    3822                         return true;
    3823                 } elseif ( in_array( $post_obj->post_title, $post ) ) {
    3824                         return true;
    3825                 } elseif ( in_array( $post_obj->post_name, $post ) ) {
    3826                         return true;
    3827                 } else {
    3828                         foreach ( $post as $postpath ) {
    3829                                 if ( ! strpos( $postpath, '/' ) ) {
    3830                                         continue;
    3831                                 }
    3832                                 $postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type );
     3843                        if ( in_array( (string) $post_obj->ID, $post ) ) {
     3844                                return true;
     3845                        } elseif ( in_array( $post_obj->post_title, $post ) ) {
     3846                                return true;
     3847                        } elseif ( in_array( $post_obj->post_name, $post ) ) {
     3848                                return true;
     3849                        } else {
     3850                                foreach ( $post as $postpath ) {
     3851                                        if ( ! strpos( $postpath, '/' ) ) {
     3852                                                continue;
     3853                                        }
     3854                                        $postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type );
    38333855
    3834                                 if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) {
    3835                                         return true;
     3856                                        if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) {
     3857                                                return true;
     3858                                        }
    38363859                                }
    38373860                        }
    38383861                }
     3862
    38393863                return false;
    38403864        }
    38413865
     
    38603884
    38613885                $post_obj = $this->get_queried_object();
    38623886
    3863                 return in_array( $post_obj->post_type, (array) $post_types );
     3887                if ( $post_obj ) {
     3888                        return in_array( $post_obj->post_type, (array) $post_types );
     3889                }
     3890
     3891                return false;
     3892
    38643893        }
    38653894
    38663895        /**
  • tests/qunit/fixtures/wp-api-generated.js

     
    470470                        },
    471471                        "template": {
    472472                            "required": false,
    473                             "enum": [
    474                                 ""
    475                             ],
    476473                            "description": "The theme file to use to display the object.",
    477474                            "type": "string"
    478475                        },
     
    653650                        },
    654651                        "template": {
    655652                            "required": false,
    656                             "enum": [
    657                                 ""
    658                             ],
    659653                            "description": "The theme file to use to display the object.",
    660654                            "type": "string"
    661655                        },
     
    10581052                        },
    10591053                        "template": {
    10601054                            "required": false,
    1061                             "enum": [
    1062                                 ""
    1063                             ],
    10641055                            "description": "The theme file to use to display the object.",
    10651056                            "type": "string"
    10661057                        }
     
    12131204                        },
    12141205                        "template": {
    12151206                            "required": false,
    1216                             "enum": [
    1217                                 ""
    1218                             ],
    12191207                            "description": "The theme file to use to display the object.",
    12201208                            "type": "string"
    12211209                        }
     
    15771565                        },
    15781566                        "template": {
    15791567                            "required": false,
    1580                             "enum": [
    1581                                 ""
    1582                             ],
    15831568                            "description": "The theme file to use to display the object.",
    15841569                            "type": "string"
    15851570                        },
     
    17171702                        },
    17181703                        "template": {
    17191704                            "required": false,
    1720                             "enum": [
    1721                                 ""
    1722                             ],
    17231705                            "description": "The theme file to use to display the object.",
    17241706                            "type": "string"
    17251707                        },