webentwicklung-frage-antwort-db.com.de

Anzeigen von benutzerdefinierten Feldern im Beitrag mit dem untergeordneten Genesis-Design

Ich habe alles versucht, damit benutzerdefinierte Felder in meinen Posts unter Verwendung eines untergeordneten Themas des Genesis-Themenrahmens angezeigt werden. Ich habe versucht, jedem Tutorial zu folgen, das ich zu diesem Thema finden konnte, aber ich kann meine benutzerdefinierten Felder trotzdem nicht in meinen Posts anzeigen lassen!

Die einfachste Lösung, die ich versucht habe, ist die Verwendung von Brad Daltons Anweisungen (ich habe viele andere Methoden ausprobiert) und das Hinzufügen der folgenden zu meiner Funktionsdatei:

add_action( 'genesis_after_post_title', 'custom_field_before_content' );
/**
* @author Brad Dalton - WP Sites
* @link http://wp.me/p1lTu0-9WF
*/
function custom_field_before_content() {
if(is_page() || is_single() ) {
genesis_custom_field('instrument');
}
}

Ich habe dann das benutzerdefinierte Feld in meinen Beiträgen hinzugefügt. Ich habe versucht, das benutzerdefinierte Feld mit erweiterten benutzerdefinierten Feldern hinzuzufügen, die im Administrator, jedoch nicht im Beitrag auf meiner Website perfekt angezeigt werden.

Weiß jemand, was ich falsch mache, um dies auszugeben, oder eine andere Methode, die für mich funktionieren könnte. Ich habe das ohne Probleme mit verschiedenen Themen gemacht, aber mit dem Genesis-Themen-Framework kann ich das nicht zum Laufen bringen - bin seit zwei Tagen dabei!

Vielen Dank,

Ciarán

2
Ciarán

Wie wäre es statt genesis_custom_field('instrument'); mit: echo genesis_get_custom_field('instrument');

Außerdem ist der Aktions-Hook genesis_after_post_title seit 1.7.0 veraltet und Sie sollten genesis_entry_header mit den richtigen Prioritäten verwenden. Für weitere Informationen benutzen Sie bitte die unten stehenden Verweise.

Referenz:

1
Borek

Hier ist meine Lösung für einen benutzerdefinierten Beitragstyp:

Fügen Sie dies zu functions.php hinzu. (Wenn Sie wie ich eine Vorlage für Ihren benutzerdefinierten Beitragstyp erstellt haben, z. B. single-instrument.php, fügen Sie diese anstelle von functions.php hinzu.)

// Display Advanced Custom Fields
add_action('genesis_entry_header', 'type_of_instrument');

function type_of_attorney() {
if ( is_singular('profile') && genesis_get_custom_field('type_of_instrument') )
echo '<hr /><div id="type_of_instrument">Title: '. genesis_get_custom_field('type_of_instrument') .'</div>';
}

Dies setzt voraus, dass Sie Ihr Feld "Typ_des_Instruments" in "Erweiterte benutzerdefinierte Felder" benannt haben. Verwenden Sie den Namen, den Sie dem Feld tatsächlich gegeben haben. Sie müssen den Code für mehrere Felder anpassen. Es wird auch ein Div um das Feld erstellt, um das Styling zu erleichtern.

Wenn Sie keinen benutzerdefinierten Beitragstyp verwenden, sollten Sie is_singular('profile') ersetzen. Meine Vermutung ist mit is_single, aber zitiere mich nicht. Wenn nicht, versuchen Sie es mit if(is_page() || is_single() ), wie in dem Code angegeben, den Sie in Ihrer Frage angegeben haben.

Hoffentlich hilft das!

2
user55013

Gute Frage Ciarán. Auch ich habe versucht, benutzerdefinierte Felder in Genesis anzuzeigen. Dieser Thread hat mich losgelassen. Dabei habe ich festgestellt, dass es möglich ist, diese Ideen noch weiter zu vertiefen.

Ich fand es zum Beispiel hilfreich, das Plugin "Erweiterte benutzerdefinierte Felder" zu verwenden, um Zielseiten in WordPress zu erstellen. Ich kann so viele WYSIWYG-Felder hinzufügen, wie ich auf der Seite benötige, und sie alle separat bearbeiten.

Um die Felder in Genesis anzuzeigen, verwende ich eine Variation des zuvor von Borek und user55013 angegebenen Codes. Im folgenden Code habe ich div-Tags hinzugefügt, damit ich jedes Feld separat mit CSS formatieren kann:

add_action( 'genesis_after_content', 'display_custom_fields' );
function display_custom_fields() {
    if( is_page_template( 'page_landing.php') ) {
        printf( '<div class="landing-part-one">%s</div>', get_field('landing_part_one') );
        printf( '<div class="landing-part-two">%s</div>', get_field('landing_part_two') );
        printf( '<div class="landing-part-three">%s</div>', get_field('landing_part_three') );
        printf( '<div class="landing-part-four">%s</div>', get_field('landing_part_four') );
    }
}

In der Zwischenzeit habe ich im Optionsfeld des Feldgruppeneditors der erweiterten benutzerdefinierten Felder die benutzerdefinierten WYSIWYG-Felder auf "Hoch (nach Titel)" gestellt und den Inhaltseditor ausgeblendet. Dies erzeugt einen sauberen Bearbeitungsbereich für die benutzerdefinierten Felder, die im Seiteneditor so angezeigt werden, als wären sie ursprünglich für WordPress. In den Standortregeln habe ich festgelegt, dass die Feldgruppe nur für die Zielseitenvorlage angezeigt wird.

Und obwohl ich ursprünglich versucht habe, mit 'genesis_get_custom_fields ()' die Felder in dieser Funktion anzuzeigen, wurden alle <p> -Tags aus dem Feld entfernt. Die Ausgabe war ein Folgeabsatz. Die Funktion Advanced Custom Fields get_field () funktioniert besser.

Unterwegs habe ich auch den Unterschied zwischen 'genesis_custom_fields ()' und 'genesis_get_custom_fields ()' gelernt. Das erste gibt das Feld direkt wieder. Die zweite gibt den Inhalt des Feldes als Zeichenfolge zurück.

Wenn Sie erweiterte benutzerdefinierte Felder für die Ausgabe von Bildern verwenden, ist dieser Thread möglicherweise hilfreich.

Ich hoffe, es hilft :-)

0
lflier