Das Folgende ist ein Gastbeitrag von Kevin Leary. Ich war ziemlich begeistert, diesen Gastbeitrag von Kevin zu erhalten, weil es meine Art von Tutorial ist: praktisch und detailliert.
Fast jedes benutzerdefinierte Theme, das ich mit WordPress entwickle, erfordert eine Management Team- oder Meet the Team-Seite. Wenn ich raten müsste, würde ich sagen, dass ich ungefähr 50 verschiedene Setups gebaut habe. Mir ist klar geworden, dass es viele andere WordPress-Entwickler da draußen geben muss, die ebenfalls ähnliche Systeme erstellen. Aus diesem Grund werde ich den Ansatz teilen, den ich typischerweise verwende, um eine „Meet The Team“-Seite in WordPress zu erstellen und zu verwalten.

Wer nur das fertige Produkt sehen möchte, findet die PHP-Klasse auf Github oder ein Beispiel.
Beispiel ansehen Repo auf Github
Das Erstellen und Verwalten einer Teamseite wie dieser in WordPress beinhaltet die folgende Kombination von Tools
- Benutzerdefinierter Beitragstyp (z.B.
team) - Benutzerdefinierte Taxonomie zum Filtern (z.B.
department) - Eine Meta-Box-Benutzeroberfläche zur Verwaltung benutzerdefinierter Felder (z.B. Position, E-Mail, Telefon und Social-Media-Links)
Anhand dieser Tools gehen wir den Prozess der Erstellung eines Meet Our Team-Templates für ein benutzerdefiniertes WordPress-Theme durch.
Zuerst & Vor allem
Bevor wir beginnen, sollte ich einige Dinge klären. Im Github-Beispiel für dieses Tutorial verwende ich einen objektorientierten Ansatz und habe meinen Code in einer separaten .php-Datei gespeichert, die ich typischerweise in der functions.php-Datei eines Themes einfüge.
Der Übersichtlichkeit halber werde ich den Prozess schrittweise prozedural beschreiben und mich darauf beziehen, dies stattdessen in Ihrer functions.php einzurichten.
Beitragstyp & Taxonomie erstellen
Der erste Schritt ist die Registrierung eines neuen Beitragstyps (z.B. team). Sie können auch eine Taxonomie (z.B. department) registrieren, falls Filterung oder Kategorisierung erforderlich ist.
Dieser Beitragstyp fügt ein neues Menü Team-Profile zum WordPress-Admin hinzu, das alle Teambeiträge von Beiträgen und Seiten trennt, um die Inhaltsverwaltung zu erleichtern.
Die Taxonomie fügt den Teambeiträgen eine benutzerdefinierte Kategorie hinzu, mit der Sie Ihr Team filtern oder kategorisieren können. Ich finde, das ist angemessen, wenn Sie ein Team von mehr als zehn Personen haben. Es ist oft nützlich, um Mitarbeiter nach Standort oder Abteilung zu filtern.

Beitragstyp
/**
* Register `team` post type
*/
function team_post_type() {
// Labels
$labels = array(
'name' => _x("Team", "post type general name"),
'singular_name' => _x("Team", "post type singular name"),
'menu_name' => 'Team Profiles',
'add_new' => _x("Add New", "team item"),
'add_new_item' => __("Add New Profile"),
'edit_item' => __("Edit Profile"),
'new_item' => __("New Profile"),
'view_item' => __("View Profile"),
'search_items' => __("Search Profiles"),
'not_found' => __("No Profiles Found"),
'not_found_in_trash' => __("No Profiles Found in Trash"),
'parent_item_colon' => ''
);
// Register post type
register_post_type('team' , array(
'labels' => $labels,
'public' => true,
'has_archive' => false,
'menu_icon' => get_stylesheet_directory_uri() . '/lib/TeamProfiles/team-icon.png',
'rewrite' => false,
'supports' => array('title', 'editor', 'thumbnail')
) );
}
add_action( 'init', 'team_post_type', 0 );
Optionale Taxonomie
/**
* Register `department` taxonomy
*/
function team_taxonomy() {
// Labels
$singular = 'Department';
$plural = 'Departments';
$labels = array(
'name' => _x( $plural, "taxonomy general name"),
'singular_name' => _x( $singular, "taxonomy singular name"),
'search_items' => __("Search $singular"),
'all_items' => __("All $singular"),
'parent_item' => __("Parent $singular"),
'parent_item_colon' => __("Parent $singular:"),
'edit_item' => __("Edit $singular"),
'update_item' => __("Update $singular"),
'add_new_item' => __("Add New $singular"),
'new_item_name' => __("New $singular Name"),
);
// Register and attach to 'team' post type
register_taxonomy( strtolower($singular), 'team', array(
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => true,
'query_var' => true,
'rewrite' => false,
'labels' => $labels
) );
}
add_action( 'init', 'team_taxonomy', 0 );
department nicht wirklich für irgendetwas. Ich habe sie in das Tutorial aufgenommen, weil es nützlich ist zu verstehen, dass sie zum Filtern von Teammitgliedern verwendet werden kann.Meta-Box für benutzerdefinierte Felder
Jetzt, da wir ein neues Menü Team-Profile in WordPress haben, müssen wir die Daten anpassen, die wir bei jedem Teambeitrag speichern. Meiner Erfahrung nach haben die meisten Teamprofile die folgenden Felder
- Position
- Telefon
Um diesen Inhalt zu verwalten, passe ich gerne die Benutzeroberfläche Neu hinzufügen und Bearbeiten für den Beitragstyp Team an, damit Site-Admins und Autoren diese Informationen ohne Schulung intuitiv aktualisieren können.
Mein bevorzugtes Tool zum Erstellen von Meta-Box-Benutzeroberflächen für benutzerdefinierte Felder ist derzeit das Advanced Custom Fields (ACF)-Plugin.

Um diese Meta-Box zu erstellen, müssen Sie das ACF-Plugin installieren und Ihre Felder unter dem Admin-Menü Benutzerdefinierte Felder erstellen. Unten sehen Sie die Felder und Einstellungen, die ich für dieses Tutorial verwendet habe.

Wenn Sie faul sind wie ich, können Sie meine XML-Exportdatei importieren, um den Erstellungsprozess der Felder zu automatisieren. So geht's:
- Laden Sie meinen Export der Feldgruppe „Team Details“ herunter: acf-export-team-details.xml.zip
- Navigieren Sie zu Tools » Importieren und wählen Sie WordPress
- Installieren Sie das WP-Import-Plugin, wenn Sie dazu aufgefordert werden
- Laden Sie die
.xml-Datei hoch und importieren Sie sie - Wählen Sie Ihren Benutzer aus und ignorieren Sie „Import Attachments“
- Das ist alles!
Das ACF-Plugin speichert seine Daten in einem benutzerdefinierten Beitragstyp, sodass das Standard-WordPress-XML-Importtool verwendet werden kann. Ziemlich clever vom Plugin-Autor, Elliot Condon.
Extras
In meiner PHP-Klasse habe ich einen Admin-Hinweis hinzugefügt, der Sie auffordert, das ACF-Plugin zu installieren, falls Sie dies noch nicht getan haben. Dies ist eine nette Erinnerung daran, dass Sie es benötigen, damit der Beitragstyp Team ordnungsgemäß funktioniert.
Benutzerdefiniertes Template
Nachdem wir unser Team-Management-System eingerichtet haben, müssen wir unsere Team-Profile irgendwo auf der Website ausgeben. Dazu erstelle ich normalerweise ein benutzerdefiniertes Theme-Template (z.B. template-team.php), das die Ansicht für eine bestimmte WordPress-Seite ändert. Einzelheiten zu benutzerdefinierten Templates finden Sie in der Dokumentation auf WordPress.org.
Loop zum Anzeigen von Teambeiträgen
Um unsere Teambeiträge in unserem benutzerdefinierten Template auszugeben, verwenden wir den folgenden Code.
'team',
'posts_per_page' => -1, // Unlimited posts
'orderby' => 'title', // Order alphabetically by name
) );
if ( $team_posts ):
?>
Meet The Team
„Einzelpersonen können und tun einen Unterschied, aber es braucht ein Team,
um die Dinge wirklich durcheinander zu bringen.“
ID) ) { $src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), ‘team-thumb’ ); $thumb_src = $src[0]; } ?>
Um eine Schleife unserer team-Beiträge zu erhalten, habe ich die Funktion get_posts verwendet. Es ist einfach, leicht zu bedienen und effizient. Ich habe die folgenden Argumente verwendet, um die Abfrageergebnisse anzusprechen und zu organisieren
'post_type' => 'team'fragt nur Teambeiträge ab'posts_per_page' => 50gibt alle unsere Teamprofile zurück, vorausgesetzt, Sie haben weniger als 50. Wenn Sie mehr planen, passen Sie dies entsprechend an.'orderby' => 'title'ordnet die Ergebnisse nach Name'order' =>; 'ASC'beginnt die alphabetische Reihenfolge
Sobald wir unser Abfrageobjekt haben, durchlaufen wir jeden Teambeitrag und geben Daten und Inhalte in unsere HTML-Struktur aus.
Die Funktionen get_field und the_field sind im ACF-Plugin integriert. Dies sind wahrscheinlich die beiden am häufigsten verwendeten Funktionen, die Sie bei der Arbeit damit finden werden. Sie geben den Wert eines bestimmten benutzerdefinierten Feldes aus.
Sobald die Schleife abgeschlossen ist, können wir eine neue Seite in WordPress erstellen und Team aus dem Dropdown-Menü der benutzerdefinierten Templates auswählen. Wenn Sie diese Seite anzeigen, sollten Sie eine Liste der Profile Ihres Teams sehen.

Anmerkungen zur Performance
Ohne jegliches Caching fügt dieser Code-Abschnitt satte 26 Abfragen zur Seite hinzu. Wenn Sie eine Website mit hohem Datenverkehr haben, ist es erforderlich, die Transients API zu nutzen, um die Ausgabe einer solch intensiven benutzerdefinierten Abfrage zwischenzuspeichern. Ich habe eine statische display()-Methode in meine PHP-Klasse aufgenommen, die das Transienten-Caching übernimmt.
if ( $team_profiles = TeamProfiles::display() )
echo $team_profiles;
Die display()-Methode verwendet Ausgabepufferung und Transienten-Caching, um das von unserer Team-Schleife generierte HTML zu speichern und zwischenzuspeichern.
Die Verwendung dieses Ansatzes anstelle unserer vorherigen Schleife reduziert die Anzahl der Abfragen auf 1, wodurch wir 25 Zugriffe auf die Datenbank sparen. Dies reduziert auch die anfängliche Seitenladezeit um 400-500 ms. Nicht schlecht!
Styling des Templates mit CSS
Nachdem wir nun unser Teamseiten-Verwaltungssystem eingerichtet und unsere HTML-Struktur ausgegeben haben, müssen wir unserem neuen Template etwas Stil verleihen.
CSS bedingt laden
Um ein Stylesheet nur für unser benutzerdefiniertes Template (template-team.php) einzubinden, können wir die folgende bedingte Überprüfung verwenden.
/**
* Load CSS for template-team.php
*/
function team_styles() {
if ( is_page_template('template-team.php') )
wp_enqueue_style( 'team-template', get_stylesheet_directory_uri() . '/assets/css/team.css' );
}
add_action( 'wp_enqueue_scripts', 'team_styles', 101 );
Dadurch wird eine CSS-Datei (/assets/css/team.css) in die Warteschlange gestellt, wenn template-team.php verwendet wird. Diese Methode hilft, Ihr Kern-Stylesheet schlank zu halten.
Beispiel-Styles
Hier sind die Styles, die ich für das Beispiel verwendet habe, das dieses Tutorial begleitet
/* ==============================================
Team profiles
============================================== */
.profiles {
margin-bottom: -20px;
}
.intro {
padding-left: 140px;
}
.intro h2 {
margin: 0 0 7px;
}
.intro .lead {
line-height: 120%;
font-size: 1.1em;
font-style: italic;
margin: 0 0 35px;
}
.profile {
position: relative;
margin: 0 0 20px;
}
.profile:nth-child(even) {
clear: left;
}
.profile-header {
position: absolute;
top: 0;
}
.profile-header img {
float: left;
}
.profile-content {
font-size: 14px;
padding: 27px 20px 0 0;
line-height: 1.4em;
margin: 0 0 0 125px;
}
.profile-content h3 {
margin: 0;
}
.profile-content .lead {
font-size: 1.3em;
line-height: 100%;
font-style: italic;
margin: 3px 0 20px;
}
.profile-content:before {
content: '';
width: 36px;
height: 3px;
background: #dededc;
position: absolute;
top: 0;
}
.profile-content p {
margin: 0 0 10px;
}
.profile-footer {
position: absolute;
top: 121px;
width: 100px;
text-align: center;
}
.profile-footer a {
line-height: 18px;
margin: 0 3px;
display: inline-block;
}
.profile-footer a:hover i {
color: #595959;
}
.profile-footer a:active i {
color: #000;
}
.profile-footer i {
font-size: 18px;
position: relative;
}
.profile-footer i.icon-envelope {
font-size: 16px;
top: -1px;
}
.profile-footer i.icon-linkedin {
font-size: 16px;
top: -1px;
}
In meinem Projekt-Workflow verwende ich LESS, um mein CSS vorzuverarbeiten. Wenn Sie LESS in Ihrem Projekt verwenden möchten, finden Sie unten das CSS im LESS-Format.
/* ==================================================
Team profiles
================================================== */
// Mixins
.border-radius(@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
// Global
.profiles {
margin-bottom: -20px; // Offset adjustment
}
.intro {
padding-left: 140px;
h2 {
margin: 0 0 7px;
}
.lead {
line-height: 120%;
font-size: 1.1em;
font-style: italic;
margin: 0 0 35px;
}
}
.profile {
position: relative;
margin: 0 0 20px;
&:nth-child(even) {
clear: left;
}
}
// Header
.profile-header {
position: absolute;
top: 0;
img {
float: left;
}
}
// Content
.profile-content {
font-size: 14px;
padding: 27px 20px 0 0;
line-height: 1.4em;
margin: 0 0 0 125px;
h3 {
margin: 0;
}
.lead {
font-size: 1.3em;
line-height: 100%;
font-style: italic;
margin: 3px 0 20px;
}
// Top separator
&:before {
content: '';
width: 36px;
height: 3px;
background: #dededc;
position: absolute;
top: 0;
}
p {
margin: 0 0 10px;
}
}
// Footer
.profile-footer {
position: absolute;
top: 121px;
width: 100px;
text-align: center;
a {
line-height: 18px;
margin: 0 3px;
display: inline-block;
}
a:hover i { color: #595959; }
a:active i { color: #000; }
i {
font-size: 18px;
position: relative;
}
i.icon-envelope {
font-size: 16px;
top: -1px;
}
i.icon-linkedin {
font-size: 16px;
top: -1px;
}
}
Fantastisch, Sie haben es geschafft!
Vielen Dank fürs Lesen. Ich hoffe, dieses Tutorial vermittelt Ihnen ein solides Verständnis dafür, wie Sie ein Team-Bio-/Meet-the-Team-/Teamprofil-Managementsystem in WordPress erstellen. Wenn Sie die in diesem Artikel erläuterten zugrunde liegenden Konzepte verstehen, sollten Sie nun einen wertvollen neuen Ansatz zur Verwaltung benutzerdefinierter Inhalte in WordPress haben.
Benutzerdefinierte Beitragstypen, Taxonomien und Meta-Box-verwaltete benutzerdefinierte Felder bieten einen leistungsstarken Ansatz zur Verwaltung vieler komplexer WordPress-CMS-Szenarien.
Tolles Tutorial, kurze Frage, warum haben Sie
get_postsanstelle einer benutzerdefiniertenWP_Queryverwendet? Letzteres scheint einfacherIch habe mich für
get_posts()gegenüberWP_Queryentschieden, weil ich tatsächlich glaube, dass es das einfachere von beiden ist. Es liegt ganz bei Ihnen,WP_Querykann auch gut funktionieren. Ich sehe keinen signifikanten Unterschied zwischen dem einen und dem anderen.Tolles Tutorial! ACF rockt für immer. Manchmal, wenn ich am faulsten bin, verwende ich sogar benutzerdefinierte Beitragstypen UI. Es ist, als ob man nicht mehr programmieren müsste. Kombinieren Sie es mit Bootstrap. Sie schlafen sozusagen, während Sie Ihre WordPress-Seite erstellen. He he!
Verwenden Sie immer, immer, immer, immer
WP_Queryanstelle vonget_postsund wenn Sieget_postsverwenden möchten, verwenden Siewp_reset_query. Ich werde dies unendlich oft mit meinen Kollegen wiederholen, es wird später viel Ärger ersparennur männliche Teammitglieder?
Schämen Sie sich!
Auf einer Beispielseite werden vier fiktive Personen gezeigt, um etwas Code zu demonstrieren. Ich werde das begraben, da ich nicht denke, dass dies der richtige Ort ist, um eine Diskussion über Geschlecht zu beginnen.
Vielen Dank für dieses detaillierte Tutorial! Ich habe seit 3 Tagen nach Tuts für benutzerdefinierte Beitragstypen gesucht und dieses ist in Bezug auf Details und Codes sehr gut. Ich habe jedoch eine Frage: Ich frage mich, ob ich diese Methode verwenden kann, um eine detaillierte Liste von Künstlern/Designern auf einer Seite anzuzeigen, die auf ihre Profile auf einer separaten Seite verlinken würde. Wäre diese Methode in Bezug auf Last/Abfragen machbar?
In der Tat! Sie müssten nur einen Link zu der richtigen URL bereitstellen, die durch Ihren benutzerdefinierten Beitragstyp erstellt wurde, und ein Template für die Benutzerprofilseite erstellen.
Es freut mich, dass Ihnen der Artikel gefallen hat, Beelal,
Das ist sehr einfach. Sie werden vielleicht bemerken, dass jeder Team-Beitrag, den Sie erstellen, keinen umgeschriebenen Slug hat. Stattdessen haben sie so etwas wie:
http://www.kevinleary.net/?team=jonathan-ive.Um individuelle Seiten für jeden Teambeitrag zu erstellen, setzen Sie den Parameter
rewritein der Funktionregister_post_type()auftrue. Dann sehen Ihre URLs in etwa so aus:http://www.kevinleary.net/team/jonathan-ive/.Danke Kevin & Adam, ich probiere das gerade aus! :)
Das Einzige, was Sie tun müssen, damit die Profile selbst funktionieren, ist, das Single-Template zu erstellen, das dazu passt, wenn sie auf den Permalink klicken. Nehmen wir an, Sie hätten einen benutzerdefinierten Beitragstyp „Künstler“. Sie würden einfach einen Permalink auf der „Team“-Seite erstellen, der zum einzelnen Beitrag führt, und Sie würden eine neue Datei namens „single-artist.php“ erstellen und dann Ihre Advanced Custom Fields hinzufügen, und Sie sind fertig.
Für diejenigen, die Kevin und Joshs Anweisungen befolgen, aber immer noch festhängen: Stellen Sie sicher, dass Sie zu Einstellungen > Permalinks gehen und diese Seite erneut speichern. Sie müssen nicht einmal Ihre Einstellung für diese Seite ändern, drücken oder tippen Sie einfach auf die Speichern-Schaltfläche, und Sie sollten auf dem richtigen Weg sein. Ich habe ein oder zwei Stunden damit verbracht, mich zu fragen, warum die einzelnen Seiten nicht angezeigt wurden! Ich hoffe, das hilft jemandem.
Kurze Frage zu Ihrer Verwendung der Transients API.
Sie verwenden
set_transient($transient_label, $html);, um die Daten ohne Ablaufdatum festzulegen. Wenn Sie einen neuen Benutzer zum Team hinzufügen würden, würde dieser nicht angezeigt werden? Nicht ganz klar, wie das funktioniert.Guter Fund Adam,
Ich habe das Github-Repo aktualisiert, um stattdessen
set_transient($transient_label, $html, DAY_IN_SECONDS);aufzunehmen. Das war definitiv ein unbeabsichtigtes Versehen meinerseits.Sie könnten auch in
save_posteinhaken, um den Cache zu aktualisieren, anstatt ein Zeitlimit zu verwenden.Gute Idee Paul, diese Idee gefällt mir eigentlich besser. Warum einen Cache aktualisieren, wenn sich nichts geändert hat, richtig?
Ich liebe das
Tolles Tutorial! Für diejenigen unter Ihnen, die keine benutzerdefinierten Beitragstypen von Hand erstellen möchten, gibt es ein nettes Plugin namens Types, das dies für Sie erledigt (aber es muss auch nach der Erstellung installiert werden, daher möchten kommerzielle Realisierungen dies möglicherweise überspringen).
Außerdem – und Javier hat das bereits gefragt – warum
get_postsanstelle vonWP_Query? Gibt es eine echte Verbesserung der Leistung durch die Verwendung?Siehe Javiers Antwort oben in der Kommentarsliste. Ich sehe keinen signifikanten Unterschied zwischen dem einen und dem anderen.
get_posts()ist eine einfachere Schnittstelle fürWP_Query, die in einer einzigen Funktion verpackt ist. Es verwendetWP_Queryselbst.Tolles Tutorial, danke! Ich habe die gleiche Kombination aus benutzerdefinierten Beitragstypen und ACF in letzter Zeit sehr oft in Kundenprojekten verwendet, es rockt! Ich habe ein paar Details aus Ihren Beispielen gelernt, besonders der kleine Caching-Tipp gefällt mir!
Toller Beitrag, vielen Dank besonders für das Performance-Snippet! Ich muss oft die Ergebnisse für verschiedene Funktionen innerhalb einer Organisation sortieren, z. B. Direktor, Verwaltungspersonal, Assistenten usw., wo sie hierarchisch und nicht alphabetisch angezeigt werden müssen. Ich habe in diesen Fällen separate Schleifen erstellt, die jeweils eine benutzerdefinierte Taxonomie durchlaufen, aber das scheint übertrieben und schlecht für die Leistung zu sein, beispielsweise in akademischen Organisationen habe ich möglicherweise 10 solcher Schleifen. Ich übersehe wahrscheinlich eine sehr offensichtliche Lösung, aber Ratschläge, wie man einen solchen Fall handhabt?
Hallo Niek,
Der effizienteste Weg wäre wahrscheinlich die Verwendung von
$wpdb, um Ihre eigene Abfrage zu erstellen. Als Zweites würde ich wahrscheinlich alle Beiträge in Ihrem Beitragstyp mitget_posts()abfragen, dann jeden einzelnen durchlaufen und die damit verbundenen Begriffe mit so etwas abrufen$post_terms = wp_get_post_terms($team_post->ID, 'departments', array("fields" => "names") );Von dort aus würde ich für jeden Taxonomie-Begriff ein Array erstellen und dann jeden Beitrag in seinem jeweiligen Array(s) speichern. Danach sollten Sie für jeden Begriff ein Array erhalten, vielleicht so etwas wie
$directors,$administrators,$staff,$assistantsusw. An dieser Stelle sollten Sie genug haben, um die Ausgabe zu generieren.Ich hoffe, das hilft. Stellen Sie sicher, dass Sie Transienten nutzen. Wenn Taxonomiebegriffe ins Spiel kommen, können die Dinge schnell ressourcen-/abfrageintensiv werden.
Kevin, vielen Dank, toller Ratschlag, ich weiß das wirklich zu schätzen!
Ah! Ich benutze ACF jetzt seit über einem Jahr und es hat mein Leben verändert!
Clevere Verwendung von benutzerdefinierten Beitragstypen für die Teammitglieder. Ich hätte wahrscheinlich das Repeater Field auf einer normalen Seite dafür verwendet, aber wenn Sie nicht für dieses AFC-Add-On bezahlen möchten, ist das eine ziemlich tolle kostenlose Möglichkeit, so ziemlich dasselbe zu erreichen.
Sie erwähnen die Leistung und wie viele Abfragen diese Methode erzeugt. Haben Sie jemals die Leistung des benutzerdefinierten Beitragstyps im Vergleich zum Repeater Field verglichen?
ACF ist ein großartiger Zeitsparer und hilft sehr bei der Entwicklung. Das Repeater Field ist ein großartiges Plugin, das ich auch in den Projekten unserer Kunden verwende.
Der Leistungsunterschied zwischen dem Repeater Field von ACF und benutzerdefinierten Beitragstypen hängt davon ab, wie viele Abfragen Sie an die Datenbank stellen, wie viele Informationen Sie daraus auswählen und wie viel zurückgegeben wird. Es hängt auch davon ab, wie Sie auf die Informationen zugreifen – ob Sie alles durchlaufen und nach etwas suchen oder ob Sie einen bestimmten Beitrag ansprechen.
Für kleine bis mittelgroße Projekte gibt es keinen signifikanten Leistungsunterschied bei der Verwendung des einen oder anderen. Es kommt darauf an, was sich in einem Projekt intuitiver anfühlt.
Guter Punkt Anna,
Ich bevorzuge im Allgemeinen Beitragstypen gegenüber Repeatern aus mehreren Gründen. Das Speichern all dieser Informationen in benutzerdefinierten Feldern erscheint ineffizient, besonders wenn das Team im Laufe der Zeit wächst.
Ich bin auf zahlreiche Umstände gestoßen, in denen es praktisch ist, eine Beitragsbeziehung für Teammitglieder einzurichten. Vielleicht waren eine Gruppe von Teammitgliedern alle Mitwirkende an einem Ebook oder Teil einer Unternehmensleistung. Wenn sich die Daten in Beitragstypen befinden, kann ich eine ACF-Beziehung verwenden, um solche Situationen zu handhaben.
Es ist auch einfacher, individuelle Teammitgliederseiten mit Beitragstypen zu erstellen, ein gängiges Szenario, das ebenfalls häufig auftaucht. Ich muss zugeben, dass diese Repeater-Felder jedoch praktisch sind.
Schönes Tutorial. Mir fällt auf, dass viele Designer ACF oder andere Plugins für diese Art von Dingen verwenden – warum nicht die benutzerdefinierten Metaboxen von Hand codieren?
Gibt es einen Nachteil beim Handcodieren und/oder einen Vorteil bei der Verwendung eines Plugins zum Erstellen benutzerdefinierter Felder (abgesehen vom offensichtlichen Zeitproblem)?
Es scheint mir, dass das Vertrauen auf ein Plugin für eine Kernfunktionalität ein Wartungsrisiko darstellt, aber vielleicht übersehe ich etwas.
Zeit ist genau der Grund. Ich könnte eine beträchtliche Menge Zeit damit verbringen, sie von Hand zu codieren – oder ich könnte 2 Minuten damit verbringen, stattdessen einige ziemlich fortgeschrittene Dinge zu bauen. Die Optionen, die mit ACF geliefert werden (wie der Datums-/Zeitauswähler und der Repeater), sind für mich Grund genug, ihm zu vertrauen.
Ich verstehe das, aber ACF scheint ein Tool zu sein, das häufig aktualisiert wird und eine große genug Benutzerbasis hat, um es zu einer zuverlässigen Wahl zu machen.
Ich wollte dasselbe fragen. Irgendjemand?
Stimmt. Diese Funktionen machen keinen Spaß beim Erstellen.
Ich verstehe, woher Sie kommen, und um ehrlich zu sein, bin ich sehr vorsichtig damit, Erin. In der Vergangenheit hatte ich epische Fehler bei der Verwendung von Plugins für solche Funktionen, wie „More Fields“ oder „Custom Field Templates“.
Für eine Weile war die WP Alchemy MetaBox Class meine Waffe der Wahl für die Meta-Box-Erstellung, und ich verwende sie immer noch gelegentlich für benutzerdefinierte Szenarien.
Als ich anfing, ACF zu verwenden, war ich vorsichtig, wieder zu einem Plugin zu wechseln, also habe ich den zugrunde liegenden Code gründlich geprüft. Mein Fazit ist, dass es sehr gut entwickelt und stabil ist und die Best Practices und APIs von WordPress nutzt. Ich fühle mich jetzt wohl dabei, es zu verwenden, und das seit etwa 6 Monaten.
Tatsächlich halte ich es aus Wartungssicht für effizienter, ein zentralisiertes Tool zu verwenden. Wenn Sie 20 Websites mit Meta-Boxen haben und WordPress ein Update vornimmt, das sich auf alle auswirkt, können Sie diese 20 Websites effektiv an einem Ort patchen oder reparieren.
Meine einzige Sorge ist, dass der Plugin-Autor irgendwann ausgebrannt sein könnte. Elliot Condon hat ein unglaubliches Tool geschaffen, das so viele Leute kostenlos nutzen. Ich kann mir vorstellen, dass je mehr Leute es nutzen, desto häufiger und anspruchsvoller werden seine Support-Anfragen.
Elliot hat begeistert getwittert, dass er Vollzeit in die Entwicklung von ACF einsteigen wird. Er hat auch großartige Pläne für Version 5 mit kostenlosem und Pro-Modell, daher denke ich nicht, dass die Entwicklung in nächster Zeit aufhören wird :-)
ACF ist auch mein Tool der Wahl, und ich würde mir wünschen, dass WordPress Elliot einfach anstellen und ACF in Vanilla WordPress integrieren würde.
Ich würde mir Sorgen machen, dass das Plugin bei einem WordPress-Update kaputt geht. Plötzlich funktionieren alle Meet the Team-Seiten, die Sie jemals erstellt haben, nicht mehr. Ein Kunde wird sich nicht darum kümmern, dass es nur eine vorübergehende Situation ist.
Es scheint mir, dass ein klügerer Weg, dies bei der Arbeit mit einfachen Layouts zu tun, darin bestünde, das Plugin im Admin für die Benutzer zu verwenden, aber Standard-WordPress-Funktionen (oder Ihre eigenen) zu verwenden, um die Daten abzurufen und in Ihren Templates anzuzeigen. Auf diese Weise, wenn das Plugin durch ein WordPress-Update irgendwie beschädigt wird, bleiben Sie nicht mit einer Reihe von kaputten oder leeren Seiten zurück, während Sie darauf warten, dass das Plugin aktualisiert wird. Im schlimmsten Fall wären Kunden vorübergehend nicht in der Lage, einzelne Teammitglieder zu aktualisieren.
Tolles Tutorial. Benutzerdefinierte Beitragstypen sind in so vielen Situationen nützlich. Ich wünschte, sie wären im WordPress-Kern nicht so versteckt.
Dies ist einer der besten Beiträge, die ich je gesehen habe. Detailliert und wirklich leicht verständlich. Vielen Dank an Kevin Leary, dass er es geteilt hat..!
Wirklich nützliches Tutorial.
Gibt es auch eine Möglichkeit, ein Teammitglied mit einem WordPress-Benutzer zu verknüpfen? Sodass jedes Teammitglied eine Liste von Beiträgen unter seiner Beschreibung usw. haben könnte.
Vielen Dank,
Ich nehme an, Sie könnten ein Feld haben, in das Sie den Benutzernamen eingeben können („vielleicht dynamisch ausfüllen?“)… und dann in Ihrem Template eine WP_Query ausführen, die Beiträge nach Autoren abruft, die mit dem zuvor erwähnten Feld übereinstimmen?
Ich glaube, ich erinnere mich, Plugins gesehen zu haben, die die Autorenprofile durch Hinzufügen zusätzlicher Felder verbessern würden – das könnte sich auch lohnen, sich anzusehen…
ACF Relationship fields sind perfekt dafür.
Fügen Sie Ihren Teambeiträgen ein Feld „Zugehörige Artikel“ oder Ihren Beiträgen ein Feld „Zugehörige Teammitglieder“ hinzu.
Was wäre der beste Weg, um die neuesten Beiträge jedes Benutzers anzuzeigen, anstatt sie manuell mit den ACF Relationship Fields auswählen zu müssen?
Wenn alle Teammitglieder WordPress-Benutzer wären, könnten Sie dann nicht die benutzerdefinierten Felder im Benutzerprofilbildschirm mit ACF erstellen?
Vielen Dank für das tolle Tutorial.
Sagen Sie mir bitte, gibt es eine Möglichkeit, einzelne Seiten für jedes Teammitglied aufzuheben? In meinem Projekt brauche ich nur eine Seite, auf der das gesamte Team angezeigt wird, ohne separate Seiten wie http://site.com/team/barack-obama/.
Chris, irgendein Grund, warum Sie dafür keinen Repeater in ACF verwenden? Könnte einen „Profil“-Repeater mit diesen Feldern erstellen und dann einfach eine While-Schleife für das Feld selbst durchführen, ohne dass zusätzliche Taxonomien erforderlich sind.
Noch besser, könnte ein flexibles Feld dafür erstellen, damit sie überall eingefügt werden können.
Repeater-Felder sind ein kostenpflichtiges Plugin, wie Anna Funk oben erwähnt hat.
Dies ist eine kostenlose Möglichkeit, Dinge zu tun.
Ah, sehr wahr, es kostet nur ein paar Dollar und ist es absolut wert. ACF ist der einzige Grund, warum ich angefangen habe, WordPress für Kundenprojekte zu verwenden, ohne es war WordPress als CMS einfach nicht gut genug.
Repeater-Felder funktionieren, aber Beitragstypen sind aus vielen Gründen oft die bessere Wahl. Siehe meine Antwort an Anna Funk oben.
Toller Artikel, das sollten Sie öfter tun.
Ich habe gefunden, wonach ich gesucht habe. Es ist großartig!
Ich habe schon seit einiger Zeit nach einem alternativen Meta-Box-Plugin gesucht und bin überwältigt von ACF. Danke für die Vorstellung!
Toller Artikel! Genau zum richtigen Zeitpunkt :D Vielen Dank!
Toller Beitrag! Ich möchte dies für das Intranet-Mitarbeiterverzeichnis eines Unternehmens anpassen, das auf WordPress läuft.
Ich habe ähnliche Projekte durchgeführt, es funktioniert hervorragend dafür. Wenn es sich um eine große Datenbank von Personen handelt, kann eine relevante Suche eine großartige Ergänzung sein. Ich würde vorschlagen, SwiftType auszuprobieren
Fantastischer Beitrag! Das perfekte Beispiel für diejenigen, die verstehen müssen, wie man benutzerdefinierte Beitragstypen, Taxonomien und benutzerdefinierte Felder verwendet.
Ich arbeite heute zufällig an einer „Meet the Team“-Seite mit ACF und einem benutzerdefinierten Beitragstyp! Ich bin auf einen Schluckauf gestoßen. Ich versuche, den Prozess ein wenig zu automatisieren, indem ich die Infoseite wie die obige auf die generierte Bioseite jedes Mitglieds verlinke. Ich sende den Permalink durch, aber dann habe ich keine Möglichkeit, diese Seite mit benutzerdefinierten Feldern zu erstellen. Ist das überhaupt möglich?
Vielen Dank!
Fantastischer Artikel. Wird mir viel Herumprobieren und Experimentieren bei etwas ersparen, woran ich gerade arbeite.
Danke Kevin,
Ich wünschte, ich hätte das vor ein paar Monaten gesehen, aber egal, mir gefällt deine Lösung besser!
Ich werde mir auf jeden Fall sowohl das ACF-Plugin als auch die Repeater-Ideen ansehen!
Viele Grüße,
Jon
PS: Das href auf den benutzerdefinierten Templates hat ein zusätzliches „s“ am Anfang, Sie sollten das vielleicht aktualisieren
fixed
Hallo Kevin,
Zunächst einmal ein fantastisches Tutorial.
Ich habe einige Fragen zu Ihrem Weg, ich wollte nur wissen, ob ich vielleicht „meine Taktik ändern“ sollte.
1) Sie verwenden ein Template für einen benutzerdefinierten Beitrag. Ist es nicht besser, die Seitenhierarchie von WP zu nutzen und eine „archive-team.php“-Seite im Theme zu erstellen und den Code dort einzufügen? Ich bin einfach nicht sehr begeistert davon, dass Kunden diese Einstellung an sich ändern (von normalem Template zu Team-Template).
2) Sie erwähnen ein Plugin zum Cachen von Dingen aufgrund des Plugins für benutzerdefinierte Metafelder. Ist es besser oder nicht, unsere eigene Metabox zu verwenden?
Ich sehe, die zweite Frage wurde bereits gestellt, also gut zu wissen. Die erste steht aber immer noch :)
Sie könnten stattdessen auch ein Beitrags-Archiv verwenden. Für die Zwecke dieser Demo funktioniert ein benutzerdefiniertes Template gut, da alle Profile auf einer einzigen Seite angezeigt werden.
Hallo Kevin, danke für deinen Beitrag – aber es gibt eine dringende Frage für mich
Warum haben Sie sich für einen benutzerdefinierten Beitragstyp entschieden, um ein Teammitglied darzustellen, obwohl WordPress bereits ein Datenobjekt zur Darstellung von Personen hat: sein Benutzersystem.
Es ist ganz einfach, das Benutzerprofil für einen Benutzer mit zusätzlichen Feldern zu erweitern und diese Felder in einer Ansicht zu lesen.
Meiner Meinung nach führt das zu einer viel saubereren Datenstruktur … mit dem zusätzlichen Vorteil, dass die Autorenseiten bereits alle Informationen enthalten, die sie benötigen, um die Detailansicht eines Autors darzustellen.
Vielen Dank für Ihre Antwort.
Tobias
Tobias, das habe ich in einem Kommentar oben in Frage gestellt. Für mich scheint das Hinzufügen von Feldern zum Benutzersystem der logische Weg zu sein.
Die einzige Gelegenheit, bei der dies möglicherweise nicht die beste Lösung ist, ist, wenn Teammitglieder keinen Zugriff auf das WordPress-System benötigen.
Das ist ein gültiger Punkt, Tobias. Ich denke, ein benutzerdefinierter Beitragstyp funktioniert gut für Unternehmens-/Geschäfts-Websites, auf denen Teammitglieder in keiner Weise Autoren sind. Meiner Erfahrung nach funktionieren die meisten „Meet The Team“-Seiten und Profile als statische Inhalte. Unter diesen Umständen erscheint es übertrieben, für jede Person ein Benutzerkonto zu verwalten, wenn sie keine Inhalte verfassen oder sich im System anmelden.
Abgesehen davon bietet die von Ihnen beschriebene Methode definitiv bemerkenswerte Vorteile. Die Bereitstellung der Möglichkeit für Teammitglieder, sich anzumelden und ihr Profil zu aktualisieren, könnte eine enorme Zeitersparnis für ein großes Verzeichnis von Profilen sein.
Für andere Leser da draußen: Wenn Ihre Teammitglieder Inhalte schreiben, würde ich Tobias' Ansatz in Betracht ziehen.
Leute,
Zuerst Kevin, vielen Dank für die Antwort. Ich werde mir das Plugin auf jeden Fall das nächste Mal ansehen.
Tobias, bezüglich Ihrer Frage, ich denke, dieser Ansatz ist am besten (benutzerdefinierter Beitragstyp), weil nicht alle Mitarbeiter WP-Benutzer sein sollten. Es ist eine Sicherheitsverletzung, wenn Sie mich fragen, jedem Zugriff zu gewähren, selbst wenn es sich um Low-Level-Zeug handelt und Sie Berechtigungen festlegen können. Man weiß nie, wann jemand den falschen Zugriff erhält usw. Es ist am besten, das Beste zu hoffen, sich auf das Schlimmste vorzubereiten :).
Außerdem ist es umständlich.
Ich versuche, etwas wp zu lernen …
Wo soll ich die Dateien ablegen – ich habe es versucht, aber ich bekomme es nicht zum Laufen …
In Ihrem Template-Ordner. /wp-content/themes/name-of-your-theme/
Toller Beitrag, ich lerne hier viel, genieße es, dass ihr eine ziemlich hochkarätige Diskussion führt. Vielen Dank, dass Sie das alles mit uns teilen!
Marco,
Ich habe die Dateien in wp-content/themes/name-of-your-theme/twentythirteen abgelegt, aber Team Profiles wird nicht im Menü angezeigt …
Sie haben dort ein zusätzliches Verzeichnis. Es sollte sein: wp-content/themes/twentythirteen
Nur ein Gedanke dazu, während ich damit herumspiele.
Es könnte sich lohnen,
"publicly_queryable" => falsezurregister_post_type-Funktion hinzuzufügen, wenn Sie nicht möchten, dass Benutzer einzelne Teamprofilseiten anzeigen können.Mit der aktuellen Einrichtung können Ihre Profile einzeln unter /?team=mark-zuckerberg angezeigt werden, was zu einem Problem führen kann, wenn Sie keine geeignete Template-Datei haben.
Natürlich wäre es höchst unwahrscheinlich, dass sie über die URL stolpern, aber ich decke gerne alle Grundlagen ab.
Irgendwelche Gedanken dazu? Gibt es einen besseren Weg?
P
Kann mir jemand sagen, wie ich
flush_rewrite_rules();dazu bringe, damit zu funktionieren?Ich versuche, ein einfaches ‘projects’-Custom Post Type Plugin basierend darauf zu erstellen, aber ich kann beim besten Willen nicht dazu bringen, dass
flush_rewrite_rules();funktioniert!Ich habe diesen Aufruf
Mit meiner Aktivierungsfunktion wie dieser
Probieren Sie dies
und ersetzen Sie Ihr
public functiondurchpublic static functionVielleicht hilft das.
Sehr schönes Tutorial… zum ersten Mal höre ich von der Transients API.
Tolles Team übrigens ;)
Sind alle PHP-Codes in der Datei functions.php enthalten? Frage zum Erstellen von sozialen Symbolen in einem benutzerdefinierten Feld. Haben Sie es mit Font Awesome verknüpft? Ich habe mich gefragt, wie man es verlinkt.
Ausgezeichnetes Tutorial, vielen Dank für die Veröffentlichung!
Gibt es eine einfache Möglichkeit, eine Plugin-Version dieses CPT zu erstellen? Wie mache ich daraus ein Plugin? Jede Anleitung wird geschätzt.
TOLLES Tutorial, vielen Dank!
Erstaunliches Tutorial. Sehr detailliert. Sie könnten diese Art von Code auch verwenden, um andere benutzerdefinierte Beitragstypen in WordPress zu erstellen, z. B. Portfolio, Dienste und andere. Wie auch immer, machen Sie weiter so.
Dies ist ein großartiger Artikel, und ich habe sofort beschlossen, ihn in einige meiner Projekte einzubauen. Da ich jedoch neu in PHP bin, könnte mir jemand helfen, den orderby-Wert zu ändern?
Grundsätzlich möchte ich meine Seite nicht alphabetisch ordnen.
Ich möchte einen Order-Index erstellen, möglicherweise unter Verwendung eines benutzerdefinierten Feldes für jedes Teamprofil (könnte das funktionieren?), und dann für jedes Teamprofil einen Wert eingeben (1,2,3..), und das wäre in meinem Kopf die Art, sie zu ordnen.
Mein Problem ist, ich habe keine Ahnung, was ich auf der Team-Template-PHP-Seite ersetzen muss:
'orderby' => 'Title', // Alphabetisch nach Name ordnenKönnte jemand so freundlich sein, mich in die richtige Richtung zu weisen oder mir zumindest zu sagen, dass ich das falsch angehe?
Wie würde ich „Title“ im Code ersetzen, um mein benutzerdefiniertes Feld zu verwenden, z. B. „index_no“?
Danke
Hallo Jim. Hier sind alle Parameter für order by
orderby (string) – Sortiert abgerufene Beiträge nach Parameter. Standardmäßig ist 'date' festgelegt. Es können eine oder mehrere Optionen übergeben werden.
‘none’ – Keine Reihenfolge (verfügbar ab Version 2.8).
‘ID’ – Nach Beitrags-ID ordnen. Beachten Sie die Großschreibung.
‘author’ – Nach Autor ordnen.
‘title’ – Nach Titel ordnen.
‘name’ – Nach Beitragsnamen ordnen (Post Slug).
‘date’ – Nach Datum ordnen.
‘modified’ – Nach Datum der letzten Änderung ordnen.
‘parent’ – Nach Beitrags-/Seiten-Parent-ID ordnen.
‘rand’ – Zufällige Reihenfolge.
‘comment_count’ – Nach Anzahl der Kommentare ordnen (verfügbar ab Version 2.9).
‘menu_order’ – Nach Seitenreihenfolge ordnen. Wird am häufigsten für Seiten (Feld „Reihenfolge“ in der Box „Seitenattribute bearbeiten“) und für Anhänge (die Ganzzahlfelder im Dialog „Medien einfügen/hochladen“) verwendet, könnte aber für jeden Beitragstyp mit unterschiedlichen „menu_order“-Werten verwendet werden (alle standardmäßig auf 0).
‘meta_value’ – Beachten Sie, dass auch ein ‘meta_key=keyname’ in der Abfrage vorhanden sein muss. Beachten Sie auch, dass die Sortierung alphabetisch erfolgt, was für Strings (d. h. Wörter) in Ordnung ist, aber für Zahlen unerwartet sein kann (z. B. 1, 3, 34, 4, 56, 6 usw. anstelle von 1, 3, 4, 6, 34, 56, wie man es natürlich erwarten würde).
Verwenden Sie stattdessen ‘meta_value_num’ für numerische Werte.
‘meta_value_num’ – Nach numerischem Meta-Wert ordnen (verfügbar ab Version 2.8). Beachten Sie auch, dass auch ein ‘meta_key=keyname’ in der Abfrage vorhanden sein muss. Dieser Wert ermöglicht eine numerische Sortierung, wie oben in ‘meta_value’ erwähnt.
‘post__in’ – Behält die Reihenfolge der Beitrags-ID bei, die im Array post__in angegeben ist (verfügbar ab Version 3.5).
Vielen Dank HeroWP, dass Sie sich die Zeit genommen haben, all diese großartigen Informationen zu posten!
Extrem hilfreich!
Hallo zusammen. Ich folge diesem Tutorial auf den Buchstaben genau, und ich habe schreckliches Pech damit, das benutzerdefinierte CSS zum Erscheinen zu bringen.
Wo genau füge ich diesen PHP-Code ein? In der functions.php meines Themes? Irgendwo anders? Ich kann die Seite nicht dazu bringen, das CSS zu laden, obwohl ich angewiesen werde, ein Template zu verwenden.
Ansonsten aber ein fehlerfreies Tutorial!
Hallo,
Ich habe es in die functions.php-Datei eingefügt. Es scheint für mich zu funktionieren.
Das ist genau das, wonach ich gesucht habe! Vielen Dank Kevin, ich freue mich sehr darauf, es auf meiner Website zu verwenden. Mein einziges Problem ist hier wahrscheinlich überflüssig, da ich ein Neuling in all dem bin, aber mein benutzerdefiniertes Seiten-Template wird nicht in meinem Dropdown-Menü in WP angezeigt. Ich habe das Theme geändert und wiederhergestellt, die PHP des Seitentitels usw. überprüft und es macht mich verrückt, wenn Sie Ratschläge haben, wäre ich super dankbar!
Ich hatte das gleiche Problem. Haben Sie die template-team.php in das richtige Verzeichnis gelegt?
Sie sollten es in wp-content\themes(your-theme-name)/template-team.php speichern
Als ich das tat, hat es funktioniert. Ich hoffe es hilft :)
Alles sehr einfach, gut erklärt, aber eine Sache: Ich kann die Symbole aus den im ACF gemeldeten Feldern nicht zum Erscheinen bringen. Ich habe die Symbole nicht in meinen Verzeichnissen. Wo finde ich sie?
Vielen Dank.
Tolles Tutorial, wirklich nützlich und genau das, wonach ich gesucht habe. Ich habe mich jedoch gefragt, ob es eine Möglichkeit gibt, sie in Blöcken nach Abteilungen anzuzeigen, z. B. alle im Vertrieb würden zusammen mit dem Titel „Vertrieb“ darüber angezeigt? Danke für die Hilfe.
Aus irgendeinem Grund bekomme ich die Seite „team“ nicht unter den Seitenattributen angezeigt, wenn ich versuche, eine neue Seite zu erstellen. Ich habe dem Tutorial bis zu dem Punkt gefolgt, an dem ich die Schleife beende und du dann über „Anmerkungen zur Leistung“ sprichst.
Wo soll man die Datei „template-team.php“ speichern? Ich habe sie derzeit im Ordner „wp-includes“ gespeichert. Ich probiere es auf einem Localhost aus, daher kann ich leider keinen Link angeben.
Hi Stig,
du speicherst die Datei template-team.php zum Beispiel im Theme-Ordner
wp-content\themes\dein-theme-name
Ich hoffe das hilft :)
Oder vergiss es. Ich habe in einigen früheren Kommentaren gelesen, dass ich die Datei „template-team.php“ in das Theme-Verzeichnis legen soll, und es hat wunderbar funktioniert :)
Danke für deine Antwort Jay. Das habe ich endlich herausgefunden.
Es lädt den Rest der WordPress-Themeseite nicht. Wenn ich eine neue Seite mit dem neuen „team“-Template erstelle, lädt es nur den Body-Tag mit einem Abschnitt, der den gerade erstellten Team-Inhalt enthält. Ich bekomme den Header, Footer, die Navbar usw. nicht.
Weiß jemand, warum das passiert?
du musst
get_header();
get_sidebar();
get_footer();
den Header oben und die Sidebar und den Footer unten einfügen, und das sollte all deine anderen Inhalte aufrufen.
Perfekt! Danke Jay :)
Hey,
Ich habe den Abschnitt get_posts nicht verstanden.
Kann jemand ein Beispiel posten, wie es aussehen sollte
in der single.php?
Entschuldigung, ich bin ein absoluter Anfänger.
Mit freundlichen Grüßen,
Alex
HI Tolles Tutorial, ein Problem, das ich habe, ist, dass es die von mir erstellte Seite „Meet your team“ in das Positionsfeld zieht anstelle des Namens der Person. Irgendwelche Ideen? Ich verwende WP3.7.1 und ein benutzerdefiniertes Genesis v2 Theme. Die Seite befindet sich derzeit im Aufbau. Ich kann Ihnen alle Dateien senden, wenn Sie sie benötigen. Außerdem wird nur in 1 Spalte anstelle von 2 angezeigt. Vielen Dank, Alistair
Ich versuche auch, dies für ein Genesis-Theme herauszufinden. Ich habe alles gemäß dem Tutorial, aber wenn ich den letzten Abschnitt zum Anzeigen des Beitrags hinzufüge, stürzt die Seite ab (völlig leerer Raum). Das Auskommentieren dieses Abschnitts repariert die Seite, aber es sind keine Beitragsinformationen vorhanden. Vielleicht benötigt das Genesis Framework eine spezifische Syntax. Ich mag diese Lösung jedoch und möchte sie zum Laufen bringen. Obwohl dies für mich noch nicht funktioniert, bin ich von den Aussichten ziemlich begeistert.
Leichte Änderung meines Kommentars. Ich habe alles in meine Haupt-functions.php eingefügt und die letzte Zeile weggelassen (in der Annahme, dass sie Teil einer eigenständigen Datei ist)
<?php endif; ?>ups. Jetzt habe ich mein Team, aber sie sind auf meiner Homepage und nicht gestylt. Ich werde weiter graben, aber offensichtlich ist dies ein Benutzerfehler. :)Wo finde ich /assets/css/team.css, um das CSS hinzuzufügen? Ich kann Assets im Theme-Verzeichnis nicht finden. Befindet sich dieses Verzeichnis woanders?
Tolle Idee, aber es ist so viel einfacher, flexibler und effizienter, ein benutzerdefiniertes Seiten-Template mit Widgets zu erstellen, die auf 50 % Breite aufgeteilt sind, und die Widget-Bereiche mit jedem Typ von Benutzerprofil-Widget zu füllen.
Habe dies kürzlich codiert, was etwa 20 Minuten dauerte und sehr einfach mit eigenem Styling angepasst werden kann.
Nettes Skript.
Ich habe eine Liste erstellt und sie funktioniert großartig, aber ich kann dies nicht mit Taxonomie zum Laufen bringen!
(Ich baue ein neues eigenes Theme)
Ich habe versucht, 'Regioner' => 'en', in get_post festzulegen, aber es wird nicht abgerufen.
Ich verwende q_translate, daher ist die Region auf „sv“, „en“ und so weiter eingestellt.
Was übersehe ich hier?
Die Labels für die Taxonomie in functions.php sind
und hier ist der Code für die Ausgabe
Dies ist bei weitem das klarste Tutorial zu CPTs, das ich bisher gefunden habe, und da ich relativ neu im WordPress-Design und der Theme-Entwicklung bin, war es eine massive Hilfe, um die Lernkurve zu „abzuflachen“.
Sehr sehr schön
Ich habe ein ähnliches Problem wie Stig.
Es gibt kein Verzeichnis namens „assets/css“, in dem ich die Datei team.css ablegen kann. Ich habe sie einfach in dasselbe Verzeichnis wie alle meine Theme-Dateien (wpcontent/themes/mytheme) gelegt.
In welche Datei soll ich überhaupt den bedingten CSS-Ladecode einfügen? Functions.php? Team-template.php?
Hallo @TheCurryGuy. Ich habe es herausgefunden. Es war im Verzeichnis des Themes, das ich verwendet habe. Ich denke, das könnte je nachdem, welches Theme du verwendest, unterschiedlich sein, da dieser Ordner in den Standard-Themes wie Twenty Fourteen nicht existiert.
In dem Theme, das ich verwendet habe, habe ich es gefunden unter
my theme/admin/assets/css
Aber ich denke, wenn es in deinem Theme nicht existiert, kannst du einfach einen Ordner mit diesem Namen per FTP erstellen.
Und den bedingten CSS-Ladecode fügst du in die functions.php ein.
Ich hoffe, das hilft! Viel Glück
Ich habe ein Problem mit der Taxonomie. Ich habe den Code bereits gepostet, aber keine Antwort erhalten. Kann mir jemand helfen, mich in die richtige Richtung zu lenken?
FRAGE
Ich habe eine Liste erstellt und sie funktioniert großartig, aber ich kann dies nicht mit Taxonomie zum Laufen bringen!
(Ich baue ein neues eigenes Theme)
Ich habe versucht, 'Regioner' => 'en', in get_post festzulegen, aber es wird nicht abgerufen.
Ich verwende q_translate, daher ist die Region auf „sv“, „en“ und so weiter eingestellt.
Was übersehe ich hier?
DER CODE
Die Labels für die Taxonomie in functions.php sind
function team_taxonomy() {// Labels
$singular = 'Region';
$plural = 'Regioner';
$labels = array(
und hier ist der Code für die Ausgabe
` ‘en’,
‘post_type’ => ‘team’,
‘posts_per_page’ => -1, // Unbegrenzte Beiträge
‘meta_key’ => ‘team_sortorder’, // wonach sortiert werden soll – dies ist ein benutzerdefinierter Beitrag
‘orderby’ => ‘meta_value’, // „meta_value“ unter Verwendung des meta_key-Parameters – „title“ Alphabetisch nach Name sortieren
‘order’ => ‘ASC’,
if ( $team_posts )
?>
`
Hallo!
Dieses Tutorial ist fantastisch! Ich fange gerade wieder an zu codieren nach einer Pause von etwa 2 Jahren und dieses Tutorial bereitet mir überhaupt keine Kopfschmerzen! Obwohl ich ein kleines Problem habe.
Nachdem ich alle Schritte (außer dem Erstellen der Taxonomie) bis zur Erstellung von „template-team.php“ durchgeführt habe, werden die Felder zum Eingeben von Informationen unter Teamprofilen nicht angezeigt. Hat sonst noch jemand dieses Problem? Hilfe? Bitte?
Vielen Dank,
Nicole
Wie andere gesagt haben, ein großartiges Tutorial, danke.
Ich muss widerwillig wieder WP für ein bestimmtes Projekt verwenden, an dem ich arbeite, weil es ein brillantes Plugin zur Erstellung einer Mitgliederseite hat (S2 Member Pro). Ich habe WP ein oder zwei Jahre lang gemieden und stattdessen MODX verwendet, das meiner Meinung nach WP weit überlegen ist, wenn es darum geht, eigene Templates und benutzerdefinierte Felder zu erstellen. Die Hauptgründe, warum ich WP nicht mehr verwendet habe, waren, dass es so frustrierend war, das zu erstellen, was ich wollte, und die meisten Tutorials vor diesem waren widersprüchlich, fehlinformierend, zu einfach oder fast nutzlos, obwohl das fairerweise auch bei MODX-Tutorials vorkommt.
Es sieht so aus, als ob ACF die Antwort auf das ist, was ich brauche, wenn ich WP für einige meiner Projekte verwenden muss. Und dein Tutorial ist ein großartiger Einblick in WP, ich sehe jetzt mehr Potenzial mit WP zusammen mit ACF, da WP ohne es viel zu unordentlich ist, um vernünftig damit zu codieren.
Hallo,
Ich bin dem Tutorial gefolgt. Aber in den letzten Schritten zum Erstellen einer Teamseite erhalte ich eine leere, weiße Seite, auf der eine Liste von Teammitgliedern ohne Header, Footer und Sidebars angezeigt wird. Auch die Links, die du in der Demo gezeigt hast (Twitter, Facebook, E-Mail usw.), sind nicht sichtbar. Ich würde mich freuen zu erfahren, wo ich falsch liege.
Ich habe die team-template-Funktion, functions.php und style.css für das Template im Child-Theme-Ordner erstellt.
Zur Information: Ich bin ein Neuling, der sich in WordPress versucht.
Link zu meiner Teamseite: meet our team page
Tolles Tutorial, vielen Dank fürs Posten... indem man den Titel für den Namen der Person verwendet, kann man nur alphabetisch nach Vornamen sortieren. Das Sortieren nach Nachnamen ist normalerweise sinnvoller – wenn ich Felder für Vor- und Nachnamen hinzufüge und die Unterstützung für „title“ entferne, habe ich keine Möglichkeit, die Beiträge aus der Beitragsliste des Adminbereichs zu bearbeiten (nur wenn ich über den Titel fahre, erhalte ich die Optionen Bearbeiten, Anzeigen, Papierkorb). Kennst du eine Lösung dafür? Danke!
Ich denke, du könntest etwas klarer darlegen, welche Dateien du genau bearbeitest und wo sich diese Dateien genau befinden müssen. Da ich keinerlei Erfahrung damit habe, hat es mich mehrere Stunden und mehrere Wiederholungen gekostet, herauszufinden, welche Dateien du bearbeitest und wo sie sich auf meinem Server befinden. Insbesondere der Teil mit den Styles. Wo genau gehört der bedingte Teil hin? Ich habe ihn in functions eingefügt und die Datei /assets/ccs/team.css erstellt, aber es funktioniert nicht. Ich werde es irgendwann herausfinden, aber es könnte klarer gemacht werden, wohin die Dinge gehören. Zum Beispiel steht in den Feldern mit dem Code einfach „php“ oder „css“. Den gesamten Dateinamen dort einzufügen, wäre viel hilfreicher. Nochmals vielen Dank!
Großartiger Code und großartiger Lehrer. Ich habe ein bisschen Probleme, die Icon-Aufrufe herauszufinden, aber gibt es eine Möglichkeit, die Liste zu ordnen, z. B. ‚me‘, ‚editor‘, ‚contributor 1‘, ‚contributor 2‘ usw.?
Wie würde ich außerdem die sozialen Icons ändern, wenn ich wollte, z. B. von LinkedIn zu Facebook usw.
Hallo, vielen Dank für dieses Tutorial. Das habe ich schon einmal im Backend von Websites gesehen, aber ich habe den Einrichtungsprozess noch nie so zugänglich aufgeschlüsselt gesehen.
Der Abschnitt „Anmerkungen zur Leistung“ enthält zusätzlichen PHP-Code. Ich bin mir nicht sicher, wo ich das hinzufügen soll. Ich bin zu dem Link zur Transients API gegangen, bin aber immer noch ratlos. Irgendeine Hilfe?
: / Ich bin hier ein wenig ratlos. Jede Hilfe wäre sehr dankbar. Ich habe ein neues Template mit dem von dir bereitgestellten Code erstellt ... Ich werde ein wenig dazu recherchieren. Ich verstehe, dass ich das „content-page.php“-Template oder eines der Templates einbinden muss, das die Navigation und das allgemeine Site-Layout einfügt. Ich bin mir nicht sicher, wo ich dein CSS zusätzlich zu welchem Template einfügen soll? Ich verwende Canvas, falls jemand dies mit Canvas gemacht hat.
Im Beispielverzeichnis für das CSS. es ist /assets/css/team.css. Wird assets nur als Beispiel verwendet, oder sollte es ein Verzeichnis mit dem Namen assets geben, das mit meiner Site verknüpft ist? Wenn ja, was sollte davor stehen.
Ich habe das schlimme Gefühl, dass ich die hoffnungslose Person im Forum bin ... alles wird geschätzt!
Tut mir leid, dass ich spamme. Ich habe das Hinzufügen von Header, Footer und Sidebar herausgefunden. Das Styling ist ein Fragezeichen, aber ich denke, ich kann es lösen. Ich bin mir immer noch unsicher, wo ich die „Anmerkungen zur Leistung“ platzieren soll.
Großartige Ressourcen! Eine Frage: Wie ändere ich die Bildanzeige von rund auf quadratisch.
Hast du ein Installationsprogramm für dieses Meet-Team-Seiten-Plugin?
Ich habe die Teamseite, aber das Styling ist falsch
Meine Konfiguration.
Dateien im Theme-Ordner
– template-team.php
– /assets/css/team.css
– /assets/css/team.less
– functions.php (registriere Team und Abteilung)
Wie behebe ich das?
Wie lade ich die team.css in die template-team.php?