Gibt es eine Möglichkeit, den Yoast-Titel mithilfe der Yoast-Variablen in eine Seite zu bekommen? (dh %%Titel%%)
Lesezeit: 4 Minuten
Hasan Tarek
Ich muss eine Funktion erstellen, damit ich diese auf jeder Seite verwenden kann, die sich außerhalb der regulären WordPress-Seite befindet. Ich meine wp_head() wird dort nicht platziert. Ich brauche es für einen bestimmten Zweck.
Der Zweck ist für AMP (ampproject.org), eine Seite, auf der ich kein CSS oder JavaScript verwenden kann. Deshalb brauche ich das; Ich muss eine Funktion bei platzieren wp_title() damit der Yoast-Titel dort platziert wird.
Ich brauche so etwas:
function yoastVariableToTitle($variable){
return yoast_vaialble_to_show_title($variable);
}
Möchtest du nur den Titel(Namen), der in meinem Yoast eingestellt ist? oder der vollständige Ausdruck %%title%% %%page%% %%sep%% %%sitename%% ??
– Raunak Gupta
28. Dezember 2016 um 13:13 Uhr
Ganzer Satz ist gut.
– Hasan Tarek
30. Dezember 2016 um 6:01 Uhr
Ich habe meine Antwort aktualisiert, bitte überprüfen Sie sie, der 2. Teil wird von Ihnen benötigt (dh So erhalten Sie den vollständigen Metatitel der Seite/des Beitrags:).
– Raunak Gupta
31. Dezember 2016 um 16:49 Uhr
Raunak Gupta
Standardmäßig nimmt Yoast ein Format als an %%title%% %%page%% %%sep%%
%%sitename%%und speichert in wp_postmeta Tisch unter _yoast_wpseo_title Taste.
Um nur den Titel der Seite/des Beitrags zu erhalten:
Fall I: Admin tritt ein %%title%% %%page%% %%sep%% %%sitename%% In SEO-Titel Feld, dann gibt der obige Code Post/Page zurück Standardtitel.
Fall II: Admin tritt ein My Custom Title %%page%% %%sep%% %%sitename%% In SEO-Titel Feld, dann wird der obige Code zurückgegeben Mein benutzerdefinierter Titel.
So erhalten Sie den vollständigen Metatitel der Seite/des Beitrags:
function yoastVariableToTitle($post_id) {
$yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true);
$title = strstr($yoast_title, '%%', true);
if (empty($title)) {
$title = get_the_title($post_id);
}
$wpseo_titles = get_option('wpseo_titles');
$sep_options = WPSEO_Option_Titles::get_instance()->get_separator_options();
if (isset($wpseo_titles['separator']) && isset($sep_options[$wpseo_titles['separator']])) {
$sep = $sep_options[$wpseo_titles['separator']];
} else {
$sep = '-'; //setting default separator if Admin didn't set it from backed
}
$site_title = get_bloginfo('name');
$meta_title = $title . ' ' . $sep . ' ' . $site_title;
return $meta_title;
}
Hoffe das hilft!
Seit Yoast 14.0 ist das jetzt viel einfacher. Mit diesem Code erhalten Sie den Titel der aktuellen Seite:
Die Problemumgehung verwende ich in meinem Plugin mit Funktionen aus class-frontend.php (Klasse von Yoast). Es funktioniert außerhalb der Schleife, geben Sie ihm einfach die ID eines Beitrags:
function convert_yoast_title ($post_id) {
$string = WPSEO_Meta::get_value( 'title', $post_id );
if ($string !== '') {
$replacer = new WPSEO_Replace_Vars();
return $replacer->replace( $string, get_post($post_id) );
}
return ''; // if not found - returns empty string
}
Einfach können Sie tun:
$title = wp_title( '-', false, '' );
sergekol
Ich landete bei Raunak Guptas Skript und musste es ändern, um die Blog-Beschreibung im Titel der Hauptseite richtig anzuzeigen. Hier die modifizierte Variante:
Möchtest du nur den Titel(Namen), der in meinem Yoast eingestellt ist? oder der vollständige Ausdruck %%title%% %%page%% %%sep%% %%sitename%% ??
– Raunak Gupta
28. Dezember 2016 um 13:13 Uhr
Ganzer Satz ist gut.
– Hasan Tarek
30. Dezember 2016 um 6:01 Uhr
Ich habe meine Antwort aktualisiert, bitte überprüfen Sie sie, der 2. Teil wird von Ihnen benötigt (dh So erhalten Sie den vollständigen Metatitel der Seite/des Beitrags:).
– Raunak Gupta
31. Dezember 2016 um 16:49 Uhr