sybrew / the-seo-framework

The SEO Framework WordPress plugin.
https://theseoframework.com/
GNU General Public License v3.0
420 stars 46 forks source link

Breadcrumbs? #65

Closed LeBaux closed 1 year ago

LeBaux commented 7 years ago

Coming from Yoast, breadcrumbs required little code modification, however in SEO Framework you can only enable/disable it in the backend.

  1. Is SEO Framework adding breadcrumbs automatically?
  2. If yes, does it work with all themes, or only on specific themes (e.g. genesis, from wp directory)?
  3. If no, what code snippet should I implement?
  4. How can I check, they are working properly?

(I am going into seemingly needless details here, however I am doing this for others potentially having the similar questions here)

sybrew commented 7 years ago

Hi @LeBaux,

The SEO Framework makes use of Google's Structured Data type Breadcrumblist.

So:

  1. Yes. See these 500+ lines.
  2. Yup. All themes 😄
  3. It's a script that's being generated. No manual manipulation required.
  4. Google's Structured Data Testing Tool (see image)

image

I hope this explains the lot! Cheers :)

Edit: Here it is in effect: image

LeBaux commented 7 years ago

Thank you for detailed clarification - this thing is simply great, since sometimes I am making super minimal themes where breadcrumbs are visual pollution and pain to deal with.

When the time for upsell comes (I am pretty sure it will) you should use this as a selling point when comparing to other popular SEO plugins.

successamp commented 7 years ago

I was looking over the code, and I didn't see a good way to add this. What would you think of being able to customize the breadcrumb title to be a bit shorter?

I'm looking at LONG breadcrumbs that read something like "Home > Example page all about Kentucky with a long title > Example page about Louisville Kentucky with an even longer title"

In my current CMS I have a breadcrumb specific title like "Home > Kentucky > Louisville" which keeps the breadcrumbs on pages with long titles nice and readable. The original title is still in the HTML under the "title" attribute on the link, so you see the full title on hover as well.

This plugin seems to work, but I'd rather have something officially part of The SEO Framework: https://github.com/GaryJones/genesis-single-breadcrumbs The plugin saves a shortened breadcrumb under '_genesis_single_breadcrumbs_title' and using that if available. Seems like it would be straight forward to add on something similar.

Thoughts?

sybrew commented 7 years ago

Hi @successamp,

The Genesis breadcrumbs are visible (painted) for the user. Whereas the ones from TSF are generated for Search Engines specifically through JSON-LD markup.

i.e. HTML:

<div class="breadcrumb" itemscope="" itemtype="http://schema.org/BreadcrumbList">
  <span class="breadcrumb-link-wrap" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
    <a href="https://theseoframework.com/" itemprop="item">
      <span itemprop="name">Home</span>
    </a>
  </span> 
  <span aria-label="breadcrumb separator">/</span> 
  <span class="breadcrumb-link-wrap" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
    <a href="https://theseoframework.com/category/changelog/" itemprop="item">
      <span itemprop="name">Changelog</span>
    </a>
  </span> 
  <span aria-label="breadcrumb separator">/</span> 
  2.8.2 – Immaculated Perception
</div>

...and JSON-LD:

{  
   "@context":"http:\/\/schema.org",
   "@type":"BreadcrumbList",
   "itemListElement":[  
      {  
         "@type":"ListItem",
         "position":1,
         "item":{  
            "@id":"https:\/\/theseoframework.com\/",
            "name":"The SEO Framework",
            "image":"https:\/\/theseoframework.com\/wp-content\/uploads\/2015\/09\/cropped-banner-1544x500.png"
         }
      },
      {  
         "@type":"ListItem",
         "position":2,
         "item":{  
            "@id":"https:\/\/theseoframework.com\/category\/changelog\/",
            "name":"Changelog",
            "image":""
         }
      },
      {  
         "@type":"ListItem",
         "position":3,
         "item":{  
            "@id":"https:\/\/theseoframework.com\/changelog\/2-8-2-immaculated-perception\/",
            "name":"2.8.2 &#8211; Immaculated Perception",
            "image":"https:\/\/theseoframework.com\/wp-content\/uploads\/2015\/09\/cropped-banner-1544x500.png"
         }
      }
   ]
}

As you can see, the JSON-LD markup adds quite a lot more data. This data must be as-provided, otherwise conflicts arise; which could get your site penalized.

I'm unsure of the implications, but if anything, you're free to alter the breadcrumb code to test this out yourself. Just be aware of cloaking, as you're then feeding data that isn't abstracted from or parallel to the actual output.

For now, I'm not going to touch this part of the software: it works and Google doesn't complain 😄.

Currently, I'm not providing a full list of why we couldn't or why we shouldn't, but the gist is:

  1. I don't know if you could or should.
  2. I do not want to output data other than as to how Google documentation provides it.
  3. Google is moving rapidly, and this is a point where it's hard to keep up.
  4. If Google changes its mind on anything about this, it could yield destructive results.
  5. Seemingly (from their testing tools), Google is more tolerant to changes in HTML code, rather than JSON-LD code.

P.S. forgive my reluctance, I'm very tired from my neighbors' kitchen rebuild (7AM-12PM drilling... 💤).

successamp commented 7 years ago

No problem @sybrew. I appreciate the response :)

sybrew commented 7 years ago

Related: https://wordpress.org/support/topic/breadcrumbs-root-name/

Markmcl commented 7 years ago

I an setting up a new site and ask here as others may find it helpful. I use https://wordpress.org/plugins/breadcrumb-trail/ from Justin Tadlock when I want breadcrumbs prominent (visible as navigation aid). Will this conflict with TSF breadcrumbs?

Markmcl commented 7 years ago

I should have searched further sooner (blushes) https://wordpress.org/support/topic/meta-descriptionbreadcrumbs-dont-work/ https://wordpress.org/support/topic/breadcrumbs-navxt-1/

sybrew commented 7 years ago

They indeed shouldn't conflict 😄. Do take note that TSF's breadcrumb is prioritized, as it's spotted first.

colomet commented 3 years ago

Hi all.

In our situation, we do not use the categories for organisation purposes, for style of the content instead.

Thre is any way not to use the categories of the post as breadcrumbs route?

Now:

SiteName > Category > PostName

to

SiteName > PostName

But there is a problem I do not understand, since we have child post, I guess the correct working way would be:

SiteName > ParentPost > PostName

The Breadcrumb Trail plugin shows:

Home > ParentPostType > ParentPost > PostName (ParentPostType here ends in an empty page too, so that's a break.

(I think, since each site works in a different way, a 100% automatic system may be a complicate problem)

Maybe it could be an easy fix by having an option in the settings page from where we can choose which elements of the array can be shown in the list. In our situation, we will deactivate the category from the list. I think it will simplify the process.

Also, since we use a wp multisite, it would be great if also there is a multisite setting where we can use site 1 of WordPress as first-level in the route like:

RootSiteName > SiteName > PostName

thanks

sybrew commented 3 years ago

Hi @colomet

An overhaul of TSF breadcrumb is long overdue: For breadcrumbs, TSF expects non-hierarchical post types to have no hierarchical traits. It is why you can't have breadcrumbs for a category/parent/child structure... for now. Instead of adding an option, I want this to become automated fully. I don't like my users tweaking structured data.

As for Multisite support... what you're asking for is quite an edge-case, and I recommend looking towards custom development.

I'm locking this thread to new comments, for I am afraid we'll get off-topic real quickly; I don't believe there's anything more to add here that couldn't fit into #440. My plan is to convert "Documentation"-tagged threads into KB articles... eventually.

If you have any more questions, please follow https://tsf.fyi/support.

sybrew commented 1 year ago

TSF v4.3.0+ will support breadcrumbs for all pages.

We will provide you with a shortcode (and block) to output that, but we first need options. The block and options may come at a later update.

For a follow-up and everything pertaining to this feature: #276.

Since the answers to this "Documentation" issue are no longer up-to-date, I'm closing it.