Seitenverknüpfungsstruktur

Ich versuche, ein benutzerdefiniertes WordPress-Theme von Grund auf neu zu erstellen. Wie Sie sehen können, sieht meine Dateistruktur so aus – footer.php, header.php, index.php, about.php und contact.php in meinem Theme-Ordner:

Bildbeschreibung hier eingeben

Ich habe die Homepage (index.php) fertiggestellt und versuche nun, diese anderen Seiten zu erstellen und mit ihnen zu verlinken. Aber wenn ich diese Seiten von der Homepage aus betrachte , war der einzige Weg, wie ich sie verlinken konnte, diese lange, hässliche Linkstruktur:

Bildbeschreibung hier eingeben

Ich frage mich, ob ich das falsch gemacht habe. Wenn ich die neuen Seiten in WordPress anstatt manuell über FTP erstelle, kann ich new.gatewaywebdesign.com/contact.php die Permalink-Struktur ändern, so dass ich new.gatewaywebdesign.com/contact.php anstelle von new.gatewaywebdesign.com/wp-content/themes/gatewaywebdesign/contact.php ?

Ich ging voran und versuchte, eine contact im WordPress-Dashboard zu erstellen, aber es wird mich nicht loswerden index.php nach dem Site-Namen:

Bildbeschreibung hier eingeben

Irgendwelche anderen Vorschläge zum Bearbeiten / Trimmen der Linkstruktur? Vielen Dank

Solutions Collecting From Web of "Seitenverknüpfungsstruktur"

Wie @Milo in seiner Antwort erwähnt, kann und soll man nicht direkt eine Vorlagendatei aufrufen. Es ist ein Sicherheitsrisiko, und Sie werden nicht mehr in der Lage sein, auf WordPress-Engine zuzugreifen, so dass Sie functionen wie the_permalink nicht verwenden können.

Um einen home.php in Ihre home.php oder wo Sie möchten get_template_part() , können Sie get_template_part() :

 get_template_part( 'relative/path/to/template' ); 

.php Sie nicht .php . Es wird automatisch hinzugefügt. Also, wenn Ihre about.php in /theme/my-theme/folder/ home.php /theme/my-theme/folder/ und Ihre home.php in /theme/my-theme/ , sollten Sie diese function folgendermaßen verwenden:

 get_template_part( 'folder/about' ); 

about.php gehört about.php wo immer Sie den Code verwenden. Jetzt haben Sie vollen Zugriff auf WordPress in Ihrer about.php und es ist keine hässliche URL nötig.

AKTUALISIEREN

Um eine Seite hinzuzufügen, erstellen Sie eine leere PHP-Datei namens page-whatever.php . Fügen Sie dann seiner Kopfzeile Folgendes hinzu:

 < ?php /** * This is the template for Pages * * @package YourPackage */ get_header(); get_template_part('path/to/portfolio'); 

Jetzt können Sie Ihre neue Seitenvorlage im Backend sehen, während Sie eine Seite hinzufügen (unter Seitenvorlagen-Dropdown-Menü).

Theme PHP-Dateien werden niemals direkt verlinkt oder geladen. Sie erstellen Seiten über die Admin-Oberfläche, deren Inhalt in der database gespeichert ist, und WordPress ordnet eingehende Anfragen der entsprechenden Themendatei zu, basierend auf der Art der Anfrage – Startseite, Archiv, einzelner Beitrag, einzelne Seite, etc .. Werfen Sie einen Blick auf die Template-Hierarchie für weitere Informationen darüber, welche Design-Dateien für jede Art von Anfrage verwendet werden.

Das Problem der index.php in Permalinks ist getrennt. Normalerweise benötigen Sie einen Server, auf dem mod_rewrite für vollständige “Pretty” Permalinks aktiviert ist. Im Moment hast du sogenannte PATHINFO oder “Almost Pretty” Permalinks. Lesen Sie die Seite Permalinks verwenden, um weitere Informationen zu den jeweiligen Anforderungen zu erhalten.

Wenn Sie eine andere Vorlage auf //site.com/contact/ haben möchten, müssen Sie eine Seite erstellen, diesen Permalink festlegen und die Vorlagendatei page-contact.php erstellen.

So funktioniert WP:

  1. Suche nach bestimmten Vorlagen ( page-contact.php unsere page-contact.php )

  2. Suche nach generischen Vorlagen (zB page.php , single.php usw.)

  3. Verwenden Sie index.php

Also, wenn es nicht 1. finden kann, geht es auf 2. und fällt dann auf index.php . Sehen Sie sich einfach an, wie die WP-Vorlagenhierarchie erstellt wurde

Die Antwort auf diese Frage ist Ja. Wenn Sie die Seiten in WordPress erstellen, können Sie die Linkstruktur ändern. Was ich tun musste, war, die index.php so zu überarbeiten, dass sie die WordPress-Schleife verwendete , und dann die Titelseite so anzuzeigen, wie die Titelseite im WordPress-Dashboard eingestellt war. So sah meine index.php :

 < ?php get_header();?> < ?php if ( have_posts() ) : ?> // Set front page < ?php if ( is_home() && ! is_front_page() ) : ?> // Display page title 

< ?php single_post_title(); ?>

< ?php endif; ?> < ?php // Start the loop. while ( have_posts() ) : the_post(); /* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'content', get_post_format() ); // End the loop. endwhile; // Previous/next page navigation. /* the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'twentyfifteen' ), 'next_text' => __( 'Next page', 'twentyfifteen' ), 'before_page_number' => '' . __( 'Page', 'twentyfifteen' ) . ' ', ) );*/ // If no content, include the "No posts found" template. else : get_template_part( 'content', 'none' ); endif; ?> < ?php get_footer();?>

single.php Sie sicher, dass Ihr Theme alle notwendigen coredateien enthält – single.php , content-link.php , content-none.php , content-page.php , content-search.php , content.php und page.php .

Erstellen Sie dann in WordPress ein Menü und legen Sie die Seiten fest, die Sie in WordPress erstellt haben, um in diesem Menü zu sein.

header.php in header.php die Links zu den verschiedenen Seiten in Ihrem Navigationsmenü wie header.php :

  

Jetzt wurde Ihr Menü in der Kopfzeile eingestellt, und wenn Sie auf einen der Links zu Ihren anderen Seiten klicken, wird die Linkstruktur so aussehen, wie Sie es möchten.