2010-12-14 7 views
0

Ich benutze einige URL-Umschreibung, zusätzlich zum URL-Umschreiben, das Wordpress nativ ausführt.URL wie in der Adressleiste angezeigt

Die Grundidee ist, dass ich eine Kategorieseite mit einer Adresse verwenden, wie es woanders erscheint gehört, so/Blog/Art/Kinder ist die wahre Kategorie in WP. Ich umschreiben dies mit einer .htaccess-Datei in/Kindern/zu der Kategorie, wie es ist eigentlich eine Seite mit dem Namen/Kinder/Programme mit diesem Code in den Kinder-Ordnern aussehen:

RewriteEngine on 
RewriteRule ^programs$ /blog/type/kids/ [P] 

Dies geschieht in zwei verschiedenen Standorten in dem Seite, aber die beiden laden die gleiche WP-Seite hinter den Kulissen. Das alles funktioniert gut.

Was ich jetzt tun muss, ist eine Variable basierend auf dem Ort, aus dem es geladen wird, um sicherzustellen, dass die Navigation den richtigen Abschnitt der Website markiert, und zeigt die richtige Subnav. Das Problem ist, dass ich nicht auf die neue, umgeschriebene URL zugreifen kann, die der Benutzer sieht.

Idealerweise ich bin auf der Suche nach so etwas wie folgt aus:

if(strpos($_SERVER['PHP_SELF'],'kids//programs')) { 
    $top_nav_item_id = 'kids'; 
} else { 
    $top_nav_item_id = 'programs'; 
    $subnav_item_id = 'kids'; 
} 

PHP_SELF beschließt, /blog/index.php und REQUEST_URI zeigt/Blog/Art/Kinder. So zeigen mir auch nicht den/kids/programs Ort, der wirklich angezeigt wird.

Irgendwelche Ideen, wie man das bekommt? Vielleicht hat WP einen eingebauten Tag dafür?

Prost!

Antwort

-1

Liefert die aktuelle URL:

<?php 
    function curPageURL() { 
    $pageURL = 'http'; 
    if (@$_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL; 
    } 
?> 
+1

Bitte den letzten Teil der Frage erneut zu lesen. REQUEST_URI löst nicht auf die richtige URL auf. –

0

Die Wordpress get_permalink() Funktion ist vollständig in http://codex.wordpress.org/Function_Reference/get_permalink beschrieben. Hier ist die Nutzung:

<?php echo get_permalink($id); ?> 

Da Sie außerhalb der Schleife arbeiten, wie Sie bereits erwähnt, können Sie nicht nur get_permalink() nennen, müssen Sie die $ id an die Funktion übergeben. Sie können den Wert von $ id aus dem Innern der Schleife gesetzt und dann ISSET($id) — verwenden, um — vor dem Aufruf von get_permalink($id) sicher zu sein.

Wenn es irgendwelche Probleme gibt, nachdem ich das mit get_permalink getestet habe (ich konnte es außerhalb der Schleife testen, aber ich habe kein Setup mit deinen mod_rewrite-Regeln), könntest du $ id aus der Schleife verwenden und dann bauen die URL manuell mit der Kategorie etwas wie folgt verwenden, verkettete nach ‚http: // ihrServername /‘:

<?php if(ISSET($specpostid)) { 
    $catarray = get_the_category($id); 
    echo $catarray[0]->cat_name; } ?> 
+0

Ich hatte dies gelesen, aber dieser Teil hat mich zu der zweiten Vermutung geführt: "Beachten Sie, dass bei Verwendung außerhalb der Schleife auf einer Posts-Seite (Index, Archiv usw.) ohne den ID-Parameter die URL des letzten Posts in The zurückgegeben wird Schleife, nicht der Permalink für die aktuelle Seite. " Und das ist definitiv außerhalb der Schleife. –

+0

Ich habe die Antwort als Antwort auf Ihren Kommentar bearbeitet. Lassen Sie mich wissen, ob das hilft. – schellack

1

ich bin auch Rewrite verwenden und dies wird für mich arbeiten wie ein Zauber:

$ _SERVER ['REDIRECT_SCRIPT_URL']

können Sie auch

$ _SERVER [ ‚REDIRECT_SCRIPT_URI‘]

+0

Das funktioniert in Joomla, wenn JUri :: current() nicht funktioniert. –

Verwandte Themen