it-swarm.com.de

Hinzufügen von Inhaltsbereichen zur benutzerdefinierten Seitenvorlage

Ich bin nicht sicher, wie ich das fragen soll. Aus diesem Grund habe ich Probleme, über Google-Suchen etwas zu finden. Ich hoffe, dass jemand hier versteht, wonach ich suche, und mich zu Informationen über die Implementierung leiten kann.

Ich arbeite an einem benutzerdefinierten Thema. Ich möchte auf meiner Vorlagenseite mehrere Bereiche haben, in die der Client Text einfügen kann. Jeder Bereich würde in einem anderen div sein. Wenn auf der Bearbeitungsseite für Administratoren die Vorlagenseite ausgewählt ist, kann der Client für jeden Bereich ein Feld mit Inhalten hinzufügen.

<div id="div1">
   Content brought in by admin
</div>
<div id="div2">
   Content brought in by admin
</div>
<div id="div3">
   Content brought in by admin
</div>

Ich möchte dies über die Admin-Bearbeitungsseite tun, anstatt den Inhalt zu widgitisieren.

In der Vorlage ist:

<?php the_content(); ?>

Gibt es eine Möglichkeit, mehr als eine zu erstellen, die zusammen mit etwas Magie in der functions.php das zu bearbeitende Feld auf der Admin-Bearbeitungsseite erzeugt?

Im Voraus danke ich Ihnen für Ihre Zeit, um mich dabei zu unterstützen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Ich bin nur auf der Suche nach einer Richtung. Ich habe versucht, dies selbst herauszufinden, aber meine Suche bringt nichts Relevantes hervor, so dass ich denke, dass ich nicht die richtige Sprache verwende.

2
JHP

Am Ende habe ich Advanced Custom Fields plugin verwendet. Anhand Ihres Beispiels möchten Sie 3 Abschnitte auf einer Homepage erstellen. Installieren Sie zuerst das ACF-Plugin. Erstellen Sie dann Ihre benutzerdefinierten Felder und fügen Sie sie Ihrer Homepage-Vorlage hinzu. Im Einstellungsbereich geben Sie jedem Feld einen bestimmten Titel. Dann würden Sie in Ihre Homepage-Vorlage so etwas schreiben:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <div class="container">

        <div class="home1">
            <p><?php the_content(); ?></p>
        </div>

        <div class="home2">
            <?php the_field( 'home2-custom-field' ); ?>
            <p><?php the_content(); ?></p>
        </div>

        <div class="home3">
            <?php the_field( 'home3-custom-field' ); ?>
            <p><?php the_content(); ?></p>
        </div>

    </div>
<?php endwhile; endif; ?>

.home1 ist der standardmäßige WordPress-Inhaltseditor, und .home2 und .home3 sind Ihre beiden neuen ACFs. the_field() ruft den spezifischen benutzerdefinierten Inhalt ab und zeigt ihn dann wie gewohnt mit the_content() an. Ich bin neu genug in der Entwicklung von WordPress-Themes, bin also nicht zu 100% der Meinung, dass dies der beste Weg ist, aber es hat perfekt für mich funktioniert. :)

2
Finn

Vielen Dank für Ihre Hilfe und Anleitung. Ich habe mich für eine andere Route entschieden und eine Beitragskategorie für die Abschnitte der Startseite verwendet. Es ist nicht genau das, was ich tun wollte, aber es schien der zweckmäßigste Weg zu sein, um das gesuchte Endergebnis zu erzielen. Das Aktualisieren ist für den Client einfach, obwohl es nicht so einfach ist, als hätte ich mein ursprüngliches Ziel erreicht, den Vorlagenseiten-Editor so zu aktualisieren, dass drei Abschnitte hinzugefügt werden. Daran werde ich noch arbeiten, und Ihre Informationen werden mir den Einstieg erleichtern. Vielen Dank.

In der Zwischenzeit rufe ich jede Beitragskategorie auf der Vorlagenseite an. Ich verwende den folgenden Code. Ich bin mir sicher, dass es eine Möglichkeit gibt, den Code so fein abzustimmen, dass er nicht so umfangreich ist. (Bitte zögern Sie nicht, mich zu informieren, wenn Sie einige Vorschläge haben)

So oder so scheint es gut zu funktionieren.

<!--Header Home Part One-->
<div class="home1">
<?php
$my_query = new WP_Query( 'cat=9' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home1--></div>
<!--Header Home Part two-->
<div class="home2">
<?php
$my_query = new WP_Query( 'cat=10' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home2--></div>
<!--Header Home Part Three-->
<div class="home3">
<?php
$my_query = new WP_Query( 'cat=11' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home3--></div>

Nochmals vielen Dank und bitte zögern Sie nicht, mich zu informieren, wenn Sie der Meinung sind, dass der obige Code besser geschrieben werden könnte. Ich lerne, während ich gehe, und schätze jede Hilfe!

2
JHP

Ich würde Howdy_McGee Vorschlag unterstützen. Bevor Sie darüber nachdenken, benutzerdefinierte Vorlagen zu erstellen, müssen Sie die Schleife verstehen. Suchen Sie nach einfachen Lösungen für das Problem, bevor Sie sich mit dem Thema befassen.

0
icicleking