sesamyab / wordpress-sesamy

2 stars 0 forks source link

Line breaks in excerpt causes SEO issues #85

Open markusahlstrand opened 7 months ago

markusahlstrand commented 7 months ago

I an excerpt of an article contains line breaks the JSON-attribute for description gets multiple string values that causes google no to index the page. The issue seem to be in the Sesamy_Content_Container::show_seo_paywall_data() method.

markusahlstrand commented 7 months ago

The error occurs when get_the_excerpt() returns a string that contains line breaks. Then a json-description is generated that Google cannot read (example below).

The quick fix in Sesamy_Content_Container::show_seo_paywall_data() looks like this: ... "description": "<?php echo esc_html_rn( $description ); ?>", ...

and later

function esc_html_rn($s) {
    return str_replace(array("\r", "\n"), '', esc_html($s));
}

Example of incorrect json:

{
  "@context": ["https://schema.org"](https://schema.org/),
  "@type": "NewsArticle",
  "headline": "En intellektuell finlirare – Birger Schlaug minns vännen Per Gahrton",
  "image": "",
  "datePublished": "2023-09-19T18:38:18+02:00",
  "dateModified": "2023-12-01T09:04:16+01:00",
  "author": {
    "@type": "Person",
    "name": ""
  },
  "description": "&lt;p&gt;&lt;strong&gt;En intellektuell finlirare som hade förmågan att debattera med motorsåg. Miljöpartiets tidigare språkrör Birger Schlaug minns sin vän och partikollega Per Gahrton.&lt;/strong&gt;&lt;/p&gt;,
  "&lt;p&gt;Per" "Gahrton",
  "är" "död.",
  "Initiativtagare" "till",
  "bildandet" "av",
  "Miljöpartiet." "Intellektuell",
  "finlirare" "som",
  "hade" "förmågan",
  "att" "debattera",
  "med" "motorsåg",
  "när" "så",
  "krävdes",
  "som" "lärde",
  "sig" "kinesiska",
  "när" "det",
  "behövdes" "för",
  "att" "på",
  "ett" "trovärdigt",
  "sätt" "fungera",
  "som" "EU-parlamentets",
  "representant" "gentemot",
  "Kina",
  "som" "lärde",
  "sig" "ryska",
  "för" "att",
  "bättre" "förstå",
  "vad" "i",
  "herrans" "namn",
  "det" "var",
  "fråga" "om.&lt;/p&gt;",
  "&lt;p&gt;Och" "som",
  "tidiga" "morgnar",
  "–" "när",
  "vi" "andra",
  "sömndruckna" "käkade",
  "frukost" "i",
  "någon" "av",
  "alla" "mer",
  "eller" "mindre",
  "mest" "mindre",
  "sofistikerade" "kursgårdar",
  "Miljöpartiet" "lånade",
  "under" "sina",
  "första" "år",
  "–" "kom",
  "ner" "från",
  "sitt" "rum",
  "läste" "upp",
  "en" "rappt",
  "formulerad" "debattartikel",
  "han" "just",
  "skrivit" "eller",
  "levererade" "en",
  "snabb" "sammanfattning",
  "av" "en",
  "idiotisks" "ledare",
  "i" "Svenska",
  "Dagbladet.&lt;/p&gt;" "&lt;p&gt;&nbsp;&lt;/p&gt;",
  ",: null,
  "isAccessibleForFree": "False",
  "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": "False",
    "cssSelector": "sesamy-content-container"
  }
}

And the correct version:

{
"@context": ["https://schema.org"](https://schema.org/),
"@type": "NewsArticle",
"headline": "En intellektuell finlirare – Birger Schlaug minns vännen Per Gahrton",
"image": "",
"datePublished": "2023-09-19T18:38:18+02:00",
"dateModified": "2023-10-16T14:43:02+02:00",
"author": {
    "@type": "Person",
    "name": ""
},
"description": "&lt;p&gt;&lt;strong&gt;En intellektuell finlirare som hade förmågan att debattera med motorsåg. Miljöpartiets tidigare språkrör Birger Schlaug minns sin vän och partikollega Per Gahrton.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Per Gahrton är död. Initiativtagare till bildandet av Miljöpartiet. Intellektuell finlirare som hade förmågan att debattera med motorsåg när så krävdes, som lärde sig kinesiska när det behövdes för att på ett trovärdigt sätt fungera som EU-parlamentets representant gentemot Kina, som lärde sig ryska för att bättre förstå vad i herrans namn det var fråga om.&lt;/p&gt;&lt;p&gt;Och som tidiga morgnar – när vi andra sömndruckna käkade frukost i någon av alla mer eller mindre, mest mindre, sofistikerade kursgårdar Miljöpartiet lånade under sina första år – kom ner från sitt rum, läste upp en rappt formulerad debattartikel han just skrivit eller levererade en snabb sammanfattning av en idiotisks ledare i Svenska Dagbladet.&lt;/p&gt;&lt;p&gt;&nbsp;&lt;/p&gt;",
"isAccessibleForFree": "False",
"hasPart":
    {
    "@type": "WebPageElement",
    "isAccessibleForFree": "False",
    "cssSelector" : "sesamy-content-container"
    }
}
PradeepWeb77 commented 7 months ago

I have checked this but not able to reproduce issue. Can you please provide a URL if there are any so I can check by entering same description.