Support » Plugin: Yoast SEO » warning on structured data tool

  • Resolved mohdaljaraba

    (@mohdaljaraba)


    Hello,

    Im getting , for Breadcrumb:

    data-vocabulary.org schema is deprecated and not supported by Google anymore.

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Support amboutwe

    (@amboutwe)

    In recent version of Yoast SEO, the breadcrumb output is all in JSON. This likely means that the error is not caused by our plugin but by your theme or another plugin.

    Everyone except @mohdaljaraba: If you have a similar issue, please open a new request. That way it’s easier to track issues and provide assistance. Thanks!

    @mohdaljaraba Please provide links to a few pages on your site that show this error in Google Search Console.

    • This reply was modified 6 months, 3 weeks ago by amboutwe.
    Moderator Ipstenu (Mika Epstein)

    (@ipstenu)

    🏳️‍🌈 Plugin Review Team Rep

    I’ve removed pretty much all the ‘me too’ posts here.

    Folks, if you want to just follow along, there is a link that says SUBSCRIBE on the right side toolbar 🙂 Click that. You’ll get emails.

    Plugin Support amboutwe

    (@amboutwe)

    @ericheath31 @propertyofcyprus If you have a similar issue, please open a new request. That way it’s easier to track issues and provide assistance. Thanks!

    @mohdaljaraba I reveiwed the source code of the contact page. The Yoast breadcrumb schema is located under the WebPage section which is written in JSON and thus not causing the warning you see in Google Search Console. This likely means your theme (or another plugin) is outputting breadcrumb data-vocabulary.org schema. I used Google’s structured data testing tool here: https://search.google.com/structured-data/testing-tool

    https://pasteboard.co/IRaYl2F.png

    Looking at your theme’s stylesheet, the link to the author page no longer loads. This could mean that the theme is not up to date or that the author page changed. I did some additional searching and found a demo of the theme. The demo includes data-vocabulary.org schema so I’m confident that it’s your theme adding the breadcrumb schema that is no longer supported by Google. Please contact the theme author for assistance removing the schema.

    @amboutwe this is the what i found on theme markup , its possible to change it just for there or need to add more , i tried to edit data-vocabulary.org schema to schema.org but but not woking

    <?php
    /**
     * Display breadcrumbs for posts, pages, archive page with the microdata that search engines understand
     *
     * @see http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417
     *
     * @param array|string $args
     */
    function mrbara_breadcrumbs( $args = '' ) {
    	$args = wp_parse_args( $args, array(
    		'separator'         => '<i class="ion-ios-arrow-right"></i>',
    		'home_class'        => 'home',
    		'before'            => '<span class="before">' . esc_html__( 'You are here: ', 'mrbara' ) . '</span>',
    		'before_item'       => '',
    		'after_item'        => '',
    		'taxonomy'          => 'category',
    		'display_last_item' => true,
    		'show_on_front'     => true,
    		'labels'            => array(
    			'home'      => esc_html__( 'Home', 'mrbara' ),
    			'archive'   => esc_html__( 'Archives', 'mrbara' ),
    			'blog'      => esc_html__( 'Blog', 'mrbara' ),
    			'search'    => esc_html__( 'Search results for', 'mrbara' ),
    			'not_found' => esc_html__( 'Not Found', 'mrbara' ),
    			'portfolio' => esc_html__( 'Portfolio', 'mrbara' ),
    			'author'    => esc_html__( 'Author Archives:', 'mrbara' ),
    			'day'       => esc_html__( 'Daily Archives:', 'mrbara' ),
    			'month'     => esc_html__( 'Monthly Archives:', 'mrbara' ),
    			'year'      => esc_html__( 'Yearly Archives:', 'mrbara' ),
    		),
    	) );
    
    	$args = apply_filters( 'mrbara_breadcrumbs_args', $args );
    
    	if ( is_front_page() && ! $args['show_on_front'] ) {
    		return;
    	}
    
    	$items = array();
    
    	// HTML template for each item
    	$item_tpl      = $args['before_item'] . '
    		<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    			<a href="%s" itemprop="url"><span itemprop="title">%s</span></a>
    		</span>
    	' . $args['after_item'];
    	$item_text_tpl = $args['before_item'] . '
    		<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    			<span itemprop="title">%s</span>
    		</span>
    	' . $args['after_item'];
    
    	// Home
    	if ( ! $args['home_class'] ) {
    		$items[] = sprintf( $item_tpl, get_home_url(), $args['labels']['home'] );
    	} else {
    		$items[] = sprintf(
    			'%s<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    				<a class="%s" href="%s" itemprop="url"><span itemprop="title">%s</span></a>
    			</span>%s',
    			$args['before_item'],
    			$args['home_class'],
    			get_home_url(),
    			$args['labels']['home'],
    			$args['after_item']
    		);
    	}
    
    	// Front page
    	if ( is_front_page() ) {
    		$items   = array();
    		$items[] = sprintf( $item_text_tpl, $args['labels']['home'] );
    	}
    	// Blog
    	elseif ( is_home() && ! is_front_page() ) {
    		$items[] = sprintf(
    			$item_text_tpl,
    			get_the_title( get_option( 'page_for_posts' ) )
    		);
    	}
    	// Single
    	elseif ( is_single() ) {
    		// Terms
    
    		$taxonomy = $args['taxonomy'];
    
    		if( is_singular( 'portfolio_project' ) ) {
    			$taxonomy = 'portfolio_category';
    		}
    
    		if( is_singular( 'portfolio_project' ) ) {
    			$taxonomy = 'portfolio_category';
    		}
    
    		$terms   = get_the_terms( get_the_ID(),  $taxonomy );
    		if( $terms ) {
    			$term    = current( $terms );
    			$terms   = mrbara_get_term_parents( $term->term_id, $taxonomy );
    			$terms[] = $term->term_id;
    
    			foreach ( $terms as $term_id ) {
    				$term    = get_term( $term_id, $taxonomy );
    				$items[] = sprintf( $item_tpl, get_term_link( $term, $taxonomy ), $term->name );
    			}
    		}
    
    		if ( $args['display_last_item'] ) {
    			$items[] = sprintf( $item_text_tpl, get_the_title() );
    		}
    	}
    	// Page
    	elseif ( is_page() ) {
    		if( (function_exists( 'is_cart' ) && is_cart() ) || (function_exists( 'is_checkout' ) && is_checkout()) ) {
    			if( $page_id = get_option( 'woocommerce_shop_page_id' ) )
    			$items[] = sprintf( $item_tpl, esc_url(get_permalink( $page_id )), get_the_title( $page_id ) );
    
    		} else {
    			$pages = mrbara_get_post_parents( get_queried_object_id() );
    			foreach ( $pages as $page )
    			{
    				$items[] = sprintf( $item_tpl, esc_url(get_permalink( $page )), get_the_title( $page ) );
    			}
    		}
    
    		if ( $args['display_last_item'] )
    			$items[] = sprintf( $item_text_tpl, get_the_title() );
    	} elseif ( function_exists( 'is_shop' ) && is_shop() ) {
    		$title = get_the_title( get_option( 'woocommerce_shop_page_id' ) );
    		if ( $args['display_last_item'] ) {
    			$items[] = sprintf( $item_text_tpl, $title );
    		}
    	} elseif ( is_tax() || is_category() || is_tag() ) {
    		$current_term = get_queried_object();
    		$terms        = mrbara_get_term_parents( get_queried_object_id(), $current_term->taxonomy );
    
    		if( $terms ) {
    			foreach ( $terms as $term_id )
    			{
    				$term    = get_term( $term_id, $current_term->taxonomy );
    				$items[] = sprintf( $item_tpl, get_term_link( $term, $current_term->taxonomy ), $term->name );
    			}
    		}
    
    		if ( $args['display_last_item'] )
    			$items[] = sprintf( $item_text_tpl, $current_term->name );
    	}
    	elseif ( is_post_type_archive( 'portfolio_project' ) ) {
    		$items[] = sprintf( $item_text_tpl, $args['labels']['portfolio'] );
    	}
    	// Search
    	elseif ( is_search() ) {
    		$items[] = sprintf( $item_text_tpl, $args['labels']['search'] . ' &quot;' . get_search_query() . '&quot;' );
    	}
    	// 404
    	elseif ( is_404() ) {
    		$items[] = sprintf( $item_text_tpl, $args['labels']['not_found'] );
    	}
    	// Author archive
    	elseif ( is_author() ) {
    		// Queue the first post, that way we know what author we're dealing with (if that is the case).
    		the_post();
    		$items[] = sprintf(
    			$item_text_tpl,
    			$args['labels']['author'] . ' <span class="vcard"><a class="url fn n" href="' . get_author_posts_url( get_the_author_meta( 'ID' ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>'
    		);
    		rewind_posts();
    	}
    	// Day archive
    	elseif ( is_day() ) {
    		$items[] = sprintf(
    			$item_text_tpl,
    			sprintf( esc_html__( '%s %s', 'mrbara' ), $args['labels']['day'], get_the_date() )
    		);
    	}
    	// Month archive
    	elseif ( is_month() ) {
    		$items[] = sprintf(
    			$item_text_tpl,
    			sprintf( esc_html__( '%s %s', 'mrbara' ), $args['labels']['month'], get_the_date( 'F Y' ) )
    		);
    	}
    	// Year archive
    	elseif ( is_year() ) {
    		$items[] = sprintf(
    			$item_text_tpl,
    			sprintf( esc_html__( '%s %s', 'mrbara' ), $args['labels']['year'], get_the_date( 'Y' ) )
    		);
    	}
    	// Archive
    	else {
    		$items[] = sprintf(
    			$item_text_tpl,
    			$args['labels']['archive']
    		);
    	}
    
    	echo  implode( $args['separator'], $items );
    }
    
    /**
     * Searches for term parents' IDs of hierarchical taxonomies, including current term.
     * This function is similar to the WordPress function get_category_parents() but handles any type of taxonomy.
     * Modified from Hybrid Framework
     *
     * @param int|string    $term_id  The term ID
     * @param object|string $taxonomy The taxonomy of the term whose parents we want.
     *
     * @return array Array of parent terms' IDs.
     */
    function mrbara_get_term_parents( $term_id = '', $taxonomy = 'category' ) {
    	// Set up some default arrays.
    	$list = array();
    
    	// If no term ID or taxonomy is given, return an empty array.
    	if ( empty( $term_id ) || empty( $taxonomy ) ) {
    		return $list;
    	}
    
    	do {
    		$list[] = $term_id;
    
    		// Get next parent term
    		$term    = get_term( $term_id, $taxonomy );
    		$term_id = $term->parent;
    	} while ( $term_id );
    
    	// Reverse the array to put them in the proper order for the trail.
    	$list = array_reverse( $list );
    	array_pop( $list );
    
    	return $list;
    }
    
    /**
     * Gets parent posts' IDs of any post type, include current post
     * Modified from Hybrid Framework
     *
     * @param int|string $post_id ID of the post whose parents we want.
     *
     * @return array Array of parent posts' IDs.
     */
    function mrbara_get_post_parents( $post_id = '' ) {
    	// Set up some default array.
    	$list = array();
    
    	// If no post ID is given, return an empty array.
    	if ( empty( $post_id ) ) {
    		return $list;
    	}
    
    	do {
    		$list[] = $post_id;
    
    		// Get next parent post
    		$post    = get_post( $post_id );
    		$post_id = $post->post_parent;
    	} while ( $post_id );
    
    	// Reverse the array to put them in the proper order for the trail.
    	$list = array_reverse( $list );
    	array_pop( $list );
    
    	return $list;
    }
    • This reply was modified 6 months, 2 weeks ago by mohdaljaraba.
Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘warning on structured data tool’ is closed to new replies.