- Timestamp:
- 06/27/2024 08:47:38 PM (18 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/html-api/class-wp-html-processor.php
r58558 r58588 520 520 } 521 521 522 if ( 0 === count( $this->element_queue ) && ! $this->step() ) {523 while ( $this->state->stack_of_open_elements->pop() ) {522 if ( 'done' !== $this->has_seen_context_node && 0 === count( $this->element_queue ) && ! $this->step() ) { 523 while ( 'context-node' !== $this->state->stack_of_open_elements->current_node()->bookmark_name && $this->state->stack_of_open_elements->pop() ) { 524 524 continue; 525 525 } 526 $this->has_seen_context_node = 'done'; 527 return $this->next_token(); 526 528 } 527 529 … … 538 540 539 541 if ( ! isset( $this->current_element ) ) { 540 return $this->next_token(); 542 if ( 'done' === $this->has_seen_context_node ) { 543 return false; 544 } else { 545 return $this->next_token(); 546 } 541 547 } 542 548 … … 783 789 * @since 6.4.0 784 790 * 785 * @todo make aware of queue of elements, because stack operations have already been done by now.786 *787 791 * @return string[]|null Array of tag names representing path to matched node, if matched, otherwise NULL. 788 792 */ 789 793 public function get_breadcrumbs() { 790 794 $breadcrumbs = array(); 795 791 796 foreach ( $this->state->stack_of_open_elements->walk_down() as $stack_item ) { 792 797 $breadcrumbs[] = $stack_item->node_name; 798 } 799 800 if ( ! $this->is_virtual() ) { 801 return $breadcrumbs; 802 } 803 804 foreach ( $this->element_queue as $queue_item ) { 805 if ( $this->current_element->token->bookmark_name === $queue_item->token->bookmark_name ) { 806 break; 807 } 808 809 if ( 'context-node' === $queue_item->token->bookmark_name ) { 810 break; 811 } 812 813 if ( 'real' === $queue_item->provenance ) { 814 break; 815 } 816 817 if ( WP_HTML_Stack_Event::PUSH === $queue_item->operation ) { 818 $breadcrumbs[] = $queue_item->token->node_name; 819 } else { 820 array_pop( $breadcrumbs ); 821 } 822 } 823 824 if ( null !== parent::get_token_name() && ! parent::is_tag_closer() ) { 825 array_pop( $breadcrumbs ); 826 } 827 828 // Add the virtual node we're at. 829 if ( WP_HTML_Stack_Event::PUSH === $this->current_element->operation ) { 830 $breadcrumbs[] = $this->current_element->token->node_name; 793 831 } 794 832 … … 822 860 */ 823 861 public function get_current_depth() { 824 return $this->state->stack_of_open_elements->count(); 862 return $this->is_virtual() 863 ? count( $this->get_breadcrumbs() ) 864 : $this->state->stack_of_open_elements->count(); 825 865 } 826 866
Note: See TracChangeset
for help on using the changeset viewer.