Inhalte von Benutzerdefinierten Feldern getrennt ausgeben

Mit explode Feldinhalte trennen

Hinweis: Dieser Beitrag ist älter als ein Jahr und daher vielleicht nicht mehr aktuell.

Im Theme meines Regionalmagazins hat es, auf Anregung von außen, eine Veränderung gegeben.

Ich lasse dort seit neuestem für google die Geo-Koordinaten und -Position des Ortes via meta-tag ausgeben, über dem im jeweiligen Artikel berichtet wird.

Bewerkstelligt wird das Ganze über die Benutzerdefinierten Felder. Das Problem dabei ist, die jeweiligen Daten entsprechend zu trennen. Schließlich will man ich nicht Ortsnamen und Geo-Position in zwei getrennten Custom Fields eingeben, sondern nur in einem einzigen.

Grundsätzlich Problemlose Ausgabe

Den Inhalt grundsätzlich auszugeben ist selbst für Leute, die wie ich nur wenig PHP beherrschen, keine große Hexerei – sofern man eine entsprechende Vorlage hat.

1
2
3
4
5
6
7
8
9
10
//Copyright-Hinweis für die Posts
function Copyright() {
	global $id, $post_meta_cache;
 
	if ($my_subt_values = get_post_custom_values('Copyright')) {
		foreach ($my_subt_values as $key => $value) {
			echo "Artikelbild(er): © $value";
		}
	}
}

Mit dieser Funktion lasse ich die Copyright-Angaben für die Bilder im Artikel ausgeben. Vor- und Nachname des Fotografen brauchen ja nicht getrennt zu werden.

Erst einmal wird in der dritten Zeile festgelegt, das die globalen Variablen Post-ID und post_meta_cache angesprochen werden.

In der 5. Zeile geprüft, ob das Benutzerdefinierte Feld ‚Copyright‘ einen Inhalt besitzt. Wenn das der Fall ist, wird dessen Inhalt als Schlüssel an die Variable value übergeben. Die letzte Zeile sorgt dann für die Ausgabe des Inhalts.

Ist das Feld leer, wird nichts ausgegeben.

Soweit so klar, oder?

Doch was ist, wenn man einen Ortsnamen und Geokoordinaten in einem Feld hat, und diese getrennt ausgeben möchte?

Dann reicht der oben gezeigt Code nicht mehr aus.

Mit explode Inhalt des Benutzerdefinierten Feldes trennen

Und wie immer, wenn ich am Code bastele, brauche ich externe Hilfe. Diese wies mich auf den php-Befehl explode hin, mit dessen Hilfe man auch einen ganzen Satz in seine Bestandteile zerlegen und einzeln ausgeben kann.

Ich habe mich unter anderem an diesem Beispiel versucht entlang zu hangeln:

$rawPhoneNumber = "800-555-5555"; 
 
$phoneChunks = explode("-", $rawPhoneNumber);
echo "Raw Phone Number = $rawPhoneNumber <br />";
echo "First chunk = $phoneChunks[0]<br />";
echo "Second chunk = $phoneChunks[1]<br />";
echo "Third Chunk chunk = $phoneChunks[2]";

Die Telefonnummer wird nach dem in Zeile drei festgelegten Trenner ‚-‚ in ihre Einzelteile zerlegt.

Bei mir hat das alles nicht gefruchtet, bzw. funktioniert.

Letztlich habe ich mich an ein weiteres Forum gewandt, in dem mir dann der Code gleich komplett geliefert wurde – was ich so eigentlich gar nicht wollte. Schließlich ist learning by doing das Beste Konzept.

Und dieser Code schaut so aus:

1
2
3
4
5
6
7
8
9
function Placename() {
	global $id, $post_meta_cache;
 
	$koordinate = get_post_meta( get_the_ID(), 'Ort', true ) ;
	$koordinate = explode('/', $koordinate); 
 
	echo '<meta name = "geo.placename" content = "'. $koordinate[0] . '" />
		<meta name = "geo.position" content = "'. $koordinate[1] . '" /><meta name = "IBCM" content = "'. $koordinate[2] . '" />';
}

In Zeile 1 wird der Funktionsname festgelegt. Zeile zwei bestimmt, die globalen Variablen id und post_meta_cache

Mit explode Inhalte in Arrays übergeben

Der Variablen koordinate wird der Inhalt der abgerufenen id, also des betroffenen Artikels, und des betreffenden Benutzerdefinierten Feldes zugewiesen. true sagt, ob dessen Wert ein string oder ein Array ist.

Zeile 5 trennt dann nach dem als Trenner festgelegten Zeichen die einzelnen Werte und hält sie als Array vor. Diese werden in Zeile 6 dann in der gewünschten Reihenfolge ausgegeben.

Nun wird der Quelltext im Regionalmagazin (Strg-Taste und F gleichzeitig drücken, dann geo. eingeben) um die meta tags geo.placename und geo.position ergänzt.

Die Möglichkeiten, das einzusetzen, sind fast unendlich. Man kann es z. B. für Adressen nutzen. Aber auch für eine Buchliste, in der man Titel, Autor, ISBN-Name ausgibt. Und so weiter und so fort.

Oder auf mein Beispiel konkret bezogen: Ihr berichtet über ein bestimmtes Museum, einen speziellen Ort, das / den ihr weiterempfehlt. Dann könnt ihr in dem Custom Field die Adresse eintragen und z. B. mit dem GeoTag-Generator die einzelnen MetaTag-Daten generieren und ins Feld eintragen.

Da ich jetzt nicht speziell für jede Straße in einem Ort die Daten abfragen will und werde, es also stets die selben Angaben sind die verwendet werden, nutze ich noch ein zusätzliches Plugin, welches mir ermöglicht, aus einem Auswahlfeld auszuwählen. Ich muss sie also nicht jedes Mal wieder neu eingeben.

Mal schauen, in wieweit sich die Mühe der Helfer gelohnt hat, und sich die Angaben früher oder später in steigenden Besucherzahlen niederschlagen. Schließlich weiß google jetzt, welche Region, welcher Ort jeweils Thema im entsprechenden Artikel ist

Über Marcus 685 Artikel
Ich freue mich über Deinen Besuch auf meinem Blog! Wenn Dir der Artikel gefallen hat, teile ihn doch mit anderen und hinterlasse Deine Meinung.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*


CommentLuv - verlinke einen deiner Blog-Artikel