web-dev-qa-db-de.com

Wie füge ich eine benutzerdefinierte Designvariable zu einem Beitragstitel hinzu?

Ich versuche, einem Beitragstitel ein benutzerdefiniertes Feld hinzuzufügen ( Beispielseite ). Dazu folge ich den Anweisungen in diese vorherige Frage , aber die Variable wird nicht wie erwartet im Titel angezeigt. Tatsächlich erscheint der exakt gleiche Titel. Jede Hilfe wäre dankbar.

Die vorherigen Anweisungen geben an, dass der folgende Code zu functions.php hinzugefügt werden sollte:

function wpse_224340_document_title($title){
    global $post; // make sure the post object is available to us
    if(is_singular()){ // check we're on a single post
      $release_author = get_post_meta(get_the_ID(), "release_author", true);
      if($release_author != "")
        { $title["title"].= " (" . $release_author. ")";}
    }
    return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });

Die Variable in meinem Fall ist propertiesysq, nicht release_author. Ein einfaches Suchen/Ersetzen führte jedoch zu folgendem Ergebnis:.

Was passiert, wenn ich diesen Code implementiere?

Der aktuelle Seitentitel lautet: HS0525 - Chaweng Noi - Horizon Homes Koh Samui Dieser Titel wurde von einem Wordpress-Plugin "Yoast SEO" automatisch eingefügt. Nachdem ich diese automatische Titeleinfügung deaktiviert und den obigen Code eingefügt habe, ist der auf der Seite eingefügte Titel identisch mit dem Titel der vorherigen Seite: HS0525 - Chaweng Noi - Horizon Homes Koh Samui

Mögliche Fehlerquellen

Mögliche Fehlerquelle # 1: Das oben erwähnte Plugin/der Mechanismus, der seinen eigenen <title> auf die Seite zwingt. Ich recherchiere gerade, ob dies die Ursache ist. Ich würde es gerne vermeiden, das Plugin komplett zu entfernen, muss es aber möglicherweise.

Mögliche Fehlerquelle # 2: Muss ich die folgende Zeile bearbeiten, um meinem Thema/meinen Funktionen zu entsprechen?

$release_author = get_post_meta(get_the_ID(), "release_author", true);

Ich habe versucht, es durch die folgende Zeile zu ersetzen, aber es hat nicht funktioniert.

$propertysq = ale_get_meta('propertysq');

Ich sollte beachten:

  • Diese Site verfügt nicht über eine ordnungsgemäße Testumgebung, in der ich PHP Fehler und Dump-Vars leicht erkennen kann.
  • Gemäß der vorherigen Antwort habe ich mich auch daran erinnert, das <title>-Tag in meiner header.php zu kommentieren.

edit: Hier ist der genaue Code, den ich in functions.php eingefügt habe:

add_filter("document_title_parts", "wpse_224340_document_title");
function wpse_224340_document_title($title){
    global $post; // make sure the post object is available to us
    if(is_singular()){ // check we're on a single post
      $propertysq = get_post_meta(get_the_ID(), "propertysq", true);
      if($propertysq != "")
        { $title["title"].= " (" . $propertysq. ")";}
    }
    return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });
3
cag8f

Ich gehe davon aus, dass Sie propertysq benutzerdefiniertes Feld/Post-Meta im Titel verwenden möchten und Sie verwenden Yoast SEO. (Korrigieren Sie mich, wenn ich falsch liege)

Also, benutze dies ist dein functions.php

function wpse239252_hook_title($title) {
global $post; // make sure the post object is available to us
if(is_singular()){ // check we're on a single post
  $propertysq = get_post_meta(get_the_ID(), "propertysq", true);
  if($propertysq != "") { //check if not empty
    $title = $propertysq.' - '.$title;
  }
}
return $title;
}

add_filter('wpseo_title', 'wpse239252_hook_title', 15, 1);

Dadurch wird Ihrem Titel das Feld propertysq als 1,002Sq Mt - HS0525 - Chaweng Noi - Horizon Homes Koh Samui in Ihrem Beispiel hinzugefügt, wobei propertysq = 1,002Sq Mt.

PS: Um post_meta propertiesysq zu erhalten, benutze $propertysq = get_post_meta(get_the_ID(), "propertysq", true);

Lass mich, wenn es für dich funktioniert.

2
hkchakladar

Weil so viele Leute es manipulieren wollen, ist es nicht mehr in Mode, <title>-Tags in Ihren Header aufzunehmen. Stattdessen setzen Sie dort wp_head ein und erlauben die Manipulation des Titels, indem Sie ihn in Ihrem Thema unterstützen:

add_action('after_setup_theme','wpse239252_theme_init');
  function wpse239252_theme_init () {   
    add_theme_support('title-tag');
    }

Jetzt können alle Arten von (SEO-) Plugins mit dem wp_title Filter damit arbeiten. Wenn Sie mit diesem Filter etwas unternehmen und später ein Plugin aktiviert wird, geht möglicherweise alles verloren, was Sie getan haben. Nun, ich weiß nicht, welche Plugins Sie installiert haben, aber Sie können sicherstellen, dass Ihr Filter zuletzt ist, indem Sie ihm eine hohe Priorität geben, wie folgt:

add_filter( 'wp_title', 'wpse239252_title_filter', 9999, 2 );
  function wpse239252_title_filter ($title,$separator) {
    ... do stuff with $title ...
    return $title;
    }
1
cjbj