Hi Leute,
ich bin neu hier und bräuchte Hilfe bei einem eher fortgeschrittenem Vorhaben.
Ich möchte auf meiner WP-Page Fotografie Workshops anbieten und habe dafür einen eigenen CPT angelegt um das ganze bei der Erstellung zu vereinfachen. Zu jedem Workshop gehören ja diverse Infos bzw Daten wie Ort, Level (Einsteiger, Profi,...), Preis usw. Für all diese Daten habe ich eigene Datenfelder angelegt und soweit funktioniert das auch ganz gut bisher. Am Beispiel des Levels zeige ich euch was ich meine:
functions.php
add_action("admin_init", "cpt_workshops_data");
add_action("save_post", "cpt_workshops_data_save");
function cpt_workshops_data() {
add_meta_box("level_meta","Level","cpt_workshops_level","workshops","side","high");
}
function cpt_workshops_level() {
global $post;
$custom = get_post_custom($post->ID);
if(isset($custom["level"][0])) { /*Abfrage ob schon ein Level gewählt wurde*/
switch($custom["level"][0]) /*Wenn schon ein Level gewählt wurde soll der jeweilige Radiobutton wieder "checked" sein
*/ {
case "Einsteiger":
echo '
<fieldset>
<input type="radio" name="level" value="Einsteiger" checked="checked"><label> Einsteiger</label><br>
<input type="radio" name="level" value="Fortgeschritten"><label> Fortgeschritten</label><br>
<input type="radio" name="level" value="Profi"><label> Profi</label>
</fieldset>';
break;
case "Fortgeschritten":
echo '
<fieldset>
<input type="radio" name="level" value="Einsteiger"><label> Einsteiger</label><br>
<input type="radio" name="level" value="Fortgeschritten" checked="checked"><label> Fortgeschritten</label><br>
<input type="radio" name="level" value="Profi"><label> Profi</label>
</fieldset>';
break;
case "Profi":
echo '
<fieldset>
<input type="radio" name="level" value="Einsteiger"><label> Einsteiger</label><br>
<input type="radio" name="level" value="Fortgeschritten"><label> Fortgeschritten</label><br>
<input type="radio" name="level" value="Profi" checked="checked"><label> Profi</label>
</fieldset>';
break;
}
}
else { /*Falls noch kein Level gewählt wurde, lege die Variable an und gib das Standard fieldset aus (Einsteiger = checked)*/
$level = $custom["level"][0];
echo '
<fieldset>
<input type="radio" name="level" value="Einsteiger" checked="checked"><label> Einsteiger</label><br>
<input type="radio" name="level" value="Fortgeschritten"><label> Fortgeschritten</label><br>
<input type="radio" name="level" value="Profi"><label> Profi</label>
</fieldset>';
}
}
function cpt_workshops_data_save() {
global $post;
update_post_meta($post->ID, "level", $_POST["level"]);
}
Alles anzeigen
Und anschließen die Ausgabe des Werts in der single-workshops.php
Anhand dieses Beispiels sieht der Spezialist vielleicht schon dass meine PHP-Skills etwas zu wünschen übrig lassen. Ich habe vor längere Zeit C++ gelernt und kann daher einiges ableiten aber bestimmt verkompliziere ich manchmal die Dinge und man könnte es viel einfacher machen... wie auch immer...
Ich möchte jetzt noch ein Datenfeld für mitzubringende Items. Das ganze sollte dann so in etwa ausgegeben werden:
Ich dachte im Backend an eine Textarea deren Inhalt Zeilenweise ausgelesen und in der DB gespeichert wird. Ebenso wie im Beispiel oben sollte aber die Textarea wieder mit den eingegebenen Werten gefüllt werden wenn man den Post in WP bearbeitet. Sonst muss ich ja immer alles wieder eintippen wenn ich nur mal den Preis oder was am Text ändere.
Ich habe schon ein bisschen rumprobiert und gegoogelt, komme aber auf keinen grünen Zweig. Kann mir da vielleicht jemand helfen?
Vielen vielen Dank schon im Voraus! :wink:
Beste Grüße
Hamish