WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

Yoast\WP\SEO\Generators

Breadcrumbs_Generator::generate() public Yoast 1.0

Generates the breadcrumbs.

{} Это метод класса: Breadcrumbs_Generator{}

Возвращает

Массив. An array of associative arrays that each have a 'text' and a 'url'.

Использование

$Breadcrumbs_Generator = new Breadcrumbs_Generator();
$Breadcrumbs_Generator->generate( $context );
$context(Meta_Tags_Context) (обязательный)
The meta tags context.

Код Breadcrumbs_Generator::generate() Yoast 17.2

public function generate( Meta_Tags_Context $context ) {
	$static_ancestors = [];
	$breadcrumbs_home = $this->options->get( 'breadcrumbs-home' );
	if ( $breadcrumbs_home !== '' && ! \in_array( $this->current_page_helper->get_page_type(), [ 'Home_Page', 'Static_Home_Page' ], true ) ) {
		$front_page_id = $this->current_page_helper->get_front_page_id();
		if ( $front_page_id === 0 ) {
			$static_ancestors[] = $this->repository->find_for_home_page();
		}
		else {
			$static_ancestor = $this->repository->find_by_id_and_type( $front_page_id, 'post' );
			if ( $static_ancestor->post_status !== 'unindexed' ) {
				$static_ancestors[] = $static_ancestor;
			}
		}
	}
	$page_for_posts = \get_option( 'page_for_posts' );
	if ( $this->should_have_blog_crumb( $page_for_posts, $context ) ) {
		$static_ancestor = $this->repository->find_by_id_and_type( $page_for_posts, 'post' );
		if ( $static_ancestor->post_status !== 'unindexed' ) {
			$static_ancestors[] = $static_ancestor;
		}
	}
	if (
		$context->indexable->object_type === 'post'
		&& $context->indexable->object_sub_type !== 'post'
		&& $context->indexable->object_sub_type !== 'page'
		&& $this->post_type_helper->has_archive( $context->indexable->object_sub_type )
	) {
		$static_ancestors[] = $this->repository->find_for_post_type_archive( $context->indexable->object_sub_type );
	}
	if ( $context->indexable->object_type === 'term' ) {
		$parent = $this->get_taxonomy_post_type_parent( $context->indexable->object_sub_type );
		if ( $parent && $parent !== 'post' && $this->post_type_helper->has_archive( $parent ) ) {
			$static_ancestors[] = $this->repository->find_for_post_type_archive( $parent );
		}
	}

	// Get all ancestors of the indexable and append itself to get all indexables in the full crumb.
	$indexables   = $this->repository->get_ancestors( $context->indexable );
	$indexables[] = $context->indexable;

	if ( ! empty( $static_ancestors ) ) {
		\array_unshift( $indexables, ...$static_ancestors );
	}

	$indexables = \apply_filters( 'wpseo_breadcrumb_indexables', $indexables, $context );

	$callback = function ( Indexable $ancestor ) {
		$crumb = [
			'url'  => $ancestor->permalink,
			'text' => $ancestor->breadcrumb_title,
		];
		switch ( $ancestor->object_type ) {
			case 'post':
				$crumb = $this->get_post_crumb( $crumb, $ancestor );
				break;
			case 'post-type-archive':
				$crumb = $this->get_post_type_archive_crumb( $crumb, $ancestor );
				break;
			case 'term':
				$crumb = $this->get_term_crumb( $crumb, $ancestor );
				break;
			case 'system-page':
				$crumb = $this->get_system_page_crumb( $crumb, $ancestor );
				break;
			case 'user':
				$crumb = $this->get_user_crumb( $crumb, $ancestor );
				break;
			case 'date-archive':
				$crumb = $this->get_date_archive_crumb( $crumb );
				break;
		}
		return $crumb;
	};
	$crumbs   = \array_map( $callback, $indexables );

	if ( $breadcrumbs_home !== '' ) {
		$crumbs[0]['text'] = $breadcrumbs_home;
	}

	$crumbs = $this->add_paged_crumb( $crumbs, $context->indexable );

	/**
	 * Filter: 'wpseo_breadcrumb_links' - Allow the developer to filter the Yoast SEO breadcrumb links, add to them, change order, etc.
	 *
	 * @api array $crumbs The crumbs array.
	 */
	$crumbs = \apply_filters( 'wpseo_breadcrumb_links', $crumbs );

	$filter_callback = static function( $link_info, $index ) use ( $crumbs ) {
		/**
		 * Filter: 'wpseo_breadcrumb_single_link_info' - Allow developers to filter the Yoast SEO Breadcrumb link information.
		 *
		 * @api array $link_info The breadcrumb link information.
		 *
		 * @param int $index The index of the breadcrumb in the list.
		 * @param array $crumbs The complete list of breadcrumbs.
		 */
		return \apply_filters( 'wpseo_breadcrumb_single_link_info', $link_info, $index, $crumbs );
	};
	return \array_map( $filter_callback, $crumbs, \array_keys( $crumbs ) );
}