Ich erstelle einige benutzerdefinierte Vorlagen in Wordpress und übergebe einige Daten in den URLs.
Derzeit sieht meine URL folgendermaßen aus: http://www.meinewebsite.de/designer/?id=43&name=designer+name
Die URL enthält die Designer-ID und den Designernamen.
Ich würde das wirklich gerne nutzen: http://www.meinewebsite.de/designer/designer+name/
Meine Permalink-Struktur ist auf /%category%/%postname%/
gesetzt.
Meine .htaccess-Datei sieht folgendermaßen aus:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ich habe mir http://codex.wordpress.org/Using_Permalinks angesehen, bin aber nicht klüger geworden.
Ich habe zwei Fragen:
UPDATE
Ich füge weitere Informationen zur Verdeutlichung hinzu.
Meine URL wird derzeit folgendermaßen erstellt:
Url = get_permalink().'?bid='.$brand->id.'&name='.$brand->name;
Ich habe hier eine ähnliche Methode angewendet:
http://storelocator.no/search/?brandID=4673&storeID=0&brand=Moods+of+Norway
Die Verwendung des benutzerdefinierten Post-Typs war eine Option, die ich in Betracht gezogen habe, aber ich brauchte eine eigene Tabellenstruktur, da Designer/Marken mit Galerien verknüpft sind (und weitere Links zu zukünftigen Tabellen). Das Speichern von Markendaten in der Tabelle WP POST hat also nicht funktioniert.
Also muss ich das wissen:
Ich weiß (oder wusste) nicht viel über die Umschreiberegeln selbst (aber es scheint, niemand tut es ), aber basierend auf einigen anderen Antworten hier habe ich dies zum Laufen gebracht. Wir fügen eine neue Umschreiberegel hinzu, die mit designers/designer_name/
übereinstimmt. Wir "leeren" die Umschreiberegeln, damit sie in der Datenbank gespeichert werden, aber stellen Sie sicher, dass Sie dies nur einmal tun, da dies eine teure Operation ist. Jetzt richten wir ein Muster ein, das mit unserer Seite übereinstimmt, und speichern den zusätzlichen Teil in der Abfragevariablen designer_name
. Da WordPress nicht weiß, dass es auf diese Variable schauen muss, schließen wir uns dem query_vars
-Filter an und weisen es an, dies ebenfalls zu sehen.
Jetzt können wir in der page-designers.php
-Designdatei get_query_var('designer_name')
ausführen und geben Ihnen den Designernamen. Wenn Sie zusätzliches Material wie Paging (designer/designer_name/page/2
) möchten, müssen Sie eine zusätzliche Umschreiberegel für dieses (oder Feeds oder was auch immer mit designer/designer_name
beginnt) hinzufügen. Aber das grundlegende Zeug sollte funktionieren.
<?php
/*
Plugin Name: WPA 3537
Plugin URI: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress
Description: Need help with friendly URL's in Wordpress
Version: 1.0
Author: Jan Fabry
*/
register_activation_hook(__FILE__, 'wpa3537_flush_rules');
function wpa3537_flush_rules()
{
add_rewrite_rule('designers/([^/]+)', 'index.php?pagename=designers&designer_name=$matches[1]', 'top');
flush_rewrite_rules(false);
}
add_filter('query_vars', 'wpa3537_query_vars');
function wpa3537_query_vars($query_vars)
{
$query_vars[] = 'designer_name';
return $query_vars;
}
Zuerst habe ich eine Frage: Wie erhält man URLs, die wie folgt aussehen?
http://www.example.com/designers/?id=43&name=designer+name
Dies sind keine Standard-URLs für WordPress. Ist das die Art und Weise, wie Sie es sich vorstellen, soll funktionieren, oder funktioniert Ihre Site tatsächlich so? Und wenn ja, wie sind diese URLs entstanden? Ist es eine hochgradig angepasste Site? Wer hat es angepasst? Sie oder jemand anderes?
.htaccess
Das heißt, wir werden mit .htaccess
beginnen, um das aus dem Weg zu räumen . Ihre ist mit der .htaccess
-Datei praktisch jeder anderen WordPress-Installation identisch, mit Ausnahme von Installationen, die 1.) aus einem URL-Unterverzeichnis bedienen (und der Unterschied ist dann trivial), 2.) Leute hatten, die nicht verstehen, wie WordPress routet URLs, die sich um sie drehen und/oder 3.) mit Ausnahme der seltenen fortgeschrittenen Installationen, die tatsächlich .htaccess
mucking benötigen (und wenn Sie nicht wissen, warum Sie dies tun müssten, sind es fast 100%, die Sie nicht tun. )
Als nächstes ist Ihr gewünschtes URL-Format mit dem Kategorienamen im ersten Pfadsegment ein Muster, das die WordPress-Community aus Leistungsgründen verpönt, siehe dies:
Grundsätzlich ist das Problem, wenn Sie mehr als eine Handvoll für "Pages" (d. H. $post->post_type=='page'
) haben, dann vergleicht WordPress jede URL für jede geladene Seite mit der URL für jede Seite und das kann Ihr System verlangsamen. Das heißt, wenn Sie nur eine Handvoll Seiten haben und keine stark frequentierte Website, ist es meine Meinung, dass Sie nicht ins Schwitzen kommen.
(Quelle: mikeschinkel.com )
Nun zu deinen Fragen.
Ja. Wenn Sie die URL bereinigen, werden Ihre Keyword-Dichten verbessert. Das heißt, meiner Meinung nach hat SEO viel mehr zu bieten als nur das, was die Suchmaschine sieht. Wenn Sie Ihre URLs freundlicher gestalten, wird das Vertrauen der Menschen gestärkt und die Wahrscheinlichkeit erhöht, dass sie in Blogs auf Ihre Website verlinken und diese teilen Ihre Links auf Twitter, in Facebook und anderswo. Das schafft zwei Vorteile; Weitere Links, die die Suchmaschinen sehen, und mehr Aufmerksamkeit durch das Teilen.
Persönlich stelle ich mir das gerne so vor, wie man sich kleidet. Wenn Sie wirklich chaotisch sind, werden die Leute eine niedrigere unterbewusste Meinung über Sie haben, als wenn Sie akribisch sind. Ich denke, dasselbe gilt für URLs. Wenn Sie saubere, benutzerfreundliche URLs haben, scheint Ihr Haus in Ordnung zu sein. Wenn Sie schlampige URLs haben, wird Ihre Site einfach nicht gleich "fühlen", wieder IMO. (Böse URLs sind ein Grund, warum ich LinkedIn nicht mag. Ich denke, sie wären erfolgreicher gewesen, wenn sie auf URLs geachtet hätten, wie zum Beispiel Twitter.)
Ich denke, dieser Artikel und/oder diese Seite auf Codex sollten helfen können?
Grundsätzlich müssen Sie Ihre Permalinks-Vorlage festlegen und dann speichern. Möglicherweise müssen Sie FTP verwenden, um die Berechtigungseinstellungen für .htaccess
zu ändern, bevor WordPress sie für Sie speichern kann. Hoffentlich wird dieser Screenshot ausreichen, um zu veranschaulichen, was Sie tun müssen:
(Quelle: mikeschinkel.com )
Lassen Sie mich wissen, ob dies Ihre Frage beantwortet und wenn nicht, wo Sie stecken bleiben.
Außerdem gibt es viele andere Antworten auf Fragen zu Permalinks in WordPress hier bei WordPress Answers; Einige davon könnten auch für Sie hilfreich sein, und zwar in unbestimmter Reihenfolge:
Einrichten von WordPress mit benutzerdefinierten Permalinks und ohne .htaccess-Datei?
WordPress überschreibt die in HTACCESS festgelegten GET-Variablen (page_id)?
301 Weiterleitungen für Post-, Seiten-, Kategorie- und Bild-URLs erstellen?
Die URL der Website zwingen, "www" einzuschließen und in Großbuchstaben zu schreiben?
Ich habe alles getan, was Jan Fabry schrieb, aber als ich anrief:
http://www.mysite.com/customPostTypeSlug/page/id
Wordpress leitet mich weiter (301) an:
http://www.mysite.com/customPostTypeSlug/page
Meine Regel ist (durch eine "Init" -Aktion aufgerufen):
add_rewrite_rule(
'customPostTypeSlug/page/([^/]+)/?' ,
'index.php?customPostTypeSlug=page&id=$matches[1]',
'top'
);
Dann spüle ich es.
Ich ändere den Permalink von %category%/%postname%
auf %postname%
und scheint zu funktionieren.