Ich benutze erweiterte benutzerdefinierte Felder, um einen interaktiven Lebenslauf auf meiner Portfolio-Website zu erstellen. Im Bereich Fähigkeiten habe ich drei Kategorien. Entwicklung, Design und Tools. Ich benutze ein Repeater-Custom-Feld auf jedem von diesen, um 4 Unterfelder zu übergeben, die Informationen über diese Fähigkeit enthalten.Ist es möglich, Wordpress/PHP-Abfrage-Schleifen einer benutzerdefinierten Funktion zuzuordnen, um Parameter ebenfalls zu übergeben?
Ich unterteile jede dieser Kategorien in 3 Repeater-Felder für das Ausfüllen im Admin-Bereich. Aber die drei Schleifen sind im Wesentlichen gleich. Sie sehen beide so aus.
<h3>Development:</h3>
<?php // check if the repeater field has rows of data
if(have_rows('development')):
// loop through the rows of data
while (have_rows('development')) : the_row();
// display a sub field value inside a card
?>
<?php
// VARIABLES //
$title = get_sub_field('title');
$logo = get_sub_field('logo');
$backImage = get_sub_field('background_image');
$overlay = get_sub_field('overlay_gradient');
$url = get_sub_field('url_link');
// THE SKILL BLOCK // ?>
<figure class="skill-block" style="<?php echo $overlay ?>">
<img class="back-image" src="<?php echo $backImage['url'] ?>"/>
<figcaption>
<div>
<img src="<?php echo $logo['url']?>">
<h4><?php echo $title ?></h4>
</div>
</figcaption>
<a href="<?php echo $url;?>">View more</a>
</figure>
<?php endwhile; //end of while statement
endif;
?>
<h3>Design</h3>
<?php // check if the repeater field has rows of data
if(have_rows('design')):
// loop through the rows of data
while (have_rows('design')) : the_row();
// display a sub field value inside a card
?>
<?php
// VARIABLES //
$title = get_sub_field('title');
$logo = get_sub_field('logo');
$backImage = get_sub_field('background_image');
$overlay = get_sub_field('overlay_gradient');
$url = get_sub_field('url_link');
// THE SKILL BLOCK // ?>
<figure class="skill-block" style="<?php echo $overlay; ?>">
<img class="back-image" src="<?php echo $backImage['url']; ?>"/>
<figcaption>
<div>
<img src="<?php echo $logo['url']; ?>">
<h4> <?php echo $title; ?></h4>
</div>
</figcaption>
<a href="<?php echo $url;?>">View more</a>
</figure>
<?php endwhile; //end of while statement
endif;
?>
<h3>Tools</h3>
<?php // check if the repeater field has rows of data
if(have_rows('tools')):
// loop through the rows of data
while (have_rows('tools')) : the_row();
// display a sub field value inside a card
?>
<?php
// VARIABLES //
$title = get_sub_field('title');
$logo = get_sub_field('logo');
$backImage = get_sub_field('background_image');
$overlay = get_sub_field('overlay_gradient');
$url = get_sub_field('url_link');
// THE SKILL BLOCK // ?>
<figure class="skill-block" style="<?php echo $overlay ?>">
<img class="back-image" src="<?php echo $backImage['url']; ?>"/>
<p>django <?php echo $backImage; ?></p>
<figcaption>
<div>
<img src="<?php echo $logo['url']; ?>">
<h4><?php echo $title; ?></h4>
</div>
</figcaption>
<a href="<?php echo $url;?>">View more</a>
</figure>
<?php endwhile; //end of while statement
endif;
?>
Anstatt dieses Ding aus 3 mal zu schreiben, und dann, wenn ich die Struktur bearbeiten Um das zu ändern 3 mal machen zu müssen, ist es möglich, diese Schleifenstruktur auf irgendeine Art von Funktion zu speichern und dann übergeben Sie Parameter, Fülle den einzigen Teil aus, der sich ändert (der Teil, der den Namen des Top-Level-Feldes angibt, wie "Entwicklung" oder "Design" oder "Werkzeuge". Irgendwelche Gedanken? Ich bin neu in Programmierung und PHP espc, aber ich versuche es DRY Schreibfähigkeiten in meine Gewohnheiten zu integrieren.
Das funktioniert, aber ich fand es wirklich einfacher, nur es Funktion Fähigkeiten ($ Abschnitt) machen {all PHP-Struktur Schleife hier mit dem while-Schleife in geben $ Schnitt} Es ist zumindest für mich einfacher, obwohl zu lesen Ich weiß nicht, ob es so trocken wie möglich ist. –
Ich habe die Struktur Ihrer Funktion nicht vollständig verstanden, aber ich denke, es wird immer noch mindestens PHP Code wiederholen, wenn nicht HTML Markup. Aber geh mit dem, was dir leicht fällt. – Junaid