Benutzerdefinierte Felder in Wordpress Teil 3

wp_logoWerbeblöcke oder andere Hinweistexte in benutzerdefinierten Feldern, die in vielen Beiträgen gleich sind, können über eine Funktion im Wordpress-Theme einfach aktualisiert werden. Bei einer Änderung müsste sonst entweder jeder Beitrag, oder jede Datei, die für die Ausgabe benötigt wird, verändert werden.

 

Für Wordpress gibt es viele Plugins, die diese Variante verwenden. Meist sind diese Plugins aber sehr speicherlastig. Eine bequeme Möglichkeit ist, benutzerdefinierte Felder, über eine Funktion in der functions.php zu nutzen.

 

Bei einer Änderung müssen nicht alle Dateien, wie index.php, single.php, loop.php, kategorie.php etc. geändert werden. Dies kann man Global in der functions.php erledigen.

 

Das Einfügen in das benutzerdefinierte Feld beim Artikel-Schreiben wird in “Benutzerdefinierte Felder Teil 1” und “Teil 2” ausführlich beschrieben.

 

Beispiel:

Zum besseren Verständnis, werden die Beispiele aus “Benutzerdefinierte Felder Teil 2” benutzt.

 

Die Funktion “werbung( )” wird im Wordpress Theme an die gewünschte Position innerhalb des Loop in die index.php, single.php etc. geschrieben.

<?php werbung(); ?>

 

 

Die Definition der Funktion “werbung” in der functions.php.

<?php 
function werbung() {
    global $post;
    if ( get_post_meta($post->ID,'werbung', true) ) :  ?>
    <div id="werbung">
        <a href="/http://www.tipps.1st-tec.de"/>
        1st TEC Wordpress Tipps</a>
    </div>
    <?php endif;
}
?>

Die Variable $post muss in der Funktion mit global bekannt gemacht werden.

 

Die Funktion kann beliebig erweitert werden, wie in “Benutzerdefinierte Felder Teil 2” beschrieben.

 

Eine Änderung, in der Funktion für den Werbeblock, wirkt sich auf alle Beiträge aus, in denen das jeweilige benutzerdefinierte Feld hinzugefügt ist,

 

 

Benutzerdefinierte Felder an verschiedenen Positionen

Ein komplettes Beispiel mit Werbeblöcken an zwei verschiedene Positionen, einmal oberhalb des Beitrages und einmal unterhalb:

 

index.php etc.

<?php while ( have_posts() ) : the_post(); ?> 
    <?php werbung_oben(); ?>
 
        <?php get_template_part('content'); ?>

    <?php werbung_unten(); ?>
<?php endwhile; ?>

 

functions.php

<?php 
function werbung_oben() {
    global $post;
    if ( get_post_meta($post->ID,'werbung-oben', true) == 'tipps') :  ?>
    <div id="werbung" class="oben">
        <a href="/http://www.tipps.1st-tec.de"/>
        1st TEC Wordpress Tipps</a>
    </div>
    <?php endif;
}

function werbung_unten() {
    global $post;
    if ( get_post_meta($post->ID,'werbung-unten', true) == 'hosting') :  ?>
    <div id="werbung" class="unten">
        <a href="/http://www.1st-tec.de"/>
        Wordpress Webhosting</a>
    </div>
    <?php endif;
}
?>

 

In jeder Funktion können alle Variationen für die benutzerdefinierten Felder kombiniert werden.

 

 

 

Weitere Informationen

 

Benutzerdefinierte Felder in Wordpress Teil 1

Allgemeine Informationen über die Funktionen der benutzerdefinierten Felder.

 

Benutzerdefinierte Felder in Wordpress Teil 2

Werbeblöcke, Hinweistexte und andere Informationen über benutzerdefinierte Felder.

 

Benutzerdefinierte Felder in Wordpress Teil 4

Mit get_post_meta Bilder anzeigen. Der Bildname wird als Wert eingegeben.

 

Benutzerdefinierte Felder in Wordpress Teil 5

benutzerdefinierte Felder außerhalb der Schleife(Loop).

 

Wordpress Theme selbst erstellen

Kommentare   

0 #3 Manni 2014-11-30 18:04
Hallo Thomas,

die Informationen hier in Teil 3 beziehen sich auf gleiche Inhalte die in verschiedenen Beiträgen angezeigt werden.

die Funktion "the_meta()", die Du verwendest, ist die einfache Möglichkeit für benutzerdefinie rte Felder und wird immer in einer Liste dargestellt (Wie in Teil 1 beschrieben).

Für eine unformatierte Ausgabe ist die Wordpress-Funkt ion "get_post_meta( )" gedacht (Siehe benutzerdefiner te Felder Teil 2, Beispiel 1).

Wenn ich das richtig verstanden habe, benötigst Du für jeden Beitrag unterschiedlich e Einträge.

Du kannst z.B. "get_post_meta( $post->ID, 'zeiten', true)" verwenden und als Name "zeiten" verwenden, bei Wert trägst Du einfach Deinen Text für den Einlass und Beginn ein.


Eine weitere Möglichkeit wäre: Du verwendest zweimal get_post_meta, einmal für "Einlass" und einmal für "Beginn". In der PHP-Datei kann dann jeder Eintrag individuell formatiert werden und Du brauchst im Beitrag, als Wert nur die Uhrzeit einzutragen.
0 #2 thomas 2014-11-29 01:53
...und noch etwas:

Außerdem ist die Liste der "Namen" beim auswählen offensichtlich begrenzt???

Weil...jetzt nach 35 Einträgen bei den Namen...werden mir neue Namen nicht mehr angezeigt.

Finde allerdings in der Datenbank auch die Einräge nicht, wo ich ältere (nicht wirklich gebrauchte) löschen könnte???
0 #1 thomas 2014-11-29 01:52
hallo,
vielleicht kannst du mir ja helfen...
Ich benutze die Felder für ein über Jahre laufende Veranstaltungss eite um damit unterschiediche Einlass & Beginn Zeiten in Abhängigkeit von verschiedenen Spielorten zu bringen (die immer wieder in unterschiedlich en Kombinationen gebraucht werden).
Die tauchen dann in der Überschrift zur jeweiligen Veranstaltung als zweite Zeile auf.

Deswegen muss ich die Metadaten ohne Listen-formatie rung geschrieben bekommen.
Bislang gehe ich da in die Core-Datei post-template.p hp unter wp-include und lösche da alle li und ul styles in der function the_meta(). (also nach jedem Update dieser Core-Datei...im mer das gleiche Spiel)

Habe das bislang nicht hinbekommen, das entsprechend über die functions-php zu schreiben.

da wäre ich dir sehr verbunden für Hilfe.

Danke schon mal.