2010-12-14 8 views
0

私は、WordPressがネイティブに行うURL書き換えの上に、いくつかのURL書き換えを使用しています。アドレスバーに表示されているURLを取得

基本的な考え方は、他の所属のように見える住所のカテゴリページを使用することです。したがって、/ blog/type/kidsはWPの真のカテゴリです。これは、2つの異なる場所で起こる

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

:私はカテゴリが子供のフォルダにこのコードを使用して/子供/プログラムと呼ばれるその実際のページのように見えるようにするには/子供/ .htaccessファイルでこれを書き換えます両方のサイトで同じWPページが表示されます。これはすべて正常に動作します。

ここでは、ナビゲーションがサイトの適切なセクションをハイライト表示し、適切なサブナビを表示できるように、ロード先の場所に基づいて変数を設定します。問題は、ユーザーが見る新しい書き換えURLにアクセスできないことです。

理想的には、私はこのような何かを探しています:

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

PHP_SELFは/blog/index.phpし解決し、REQUEST_URIは/ブログ/種類/子供を示しています。だからどちらも私に本当に表示されている/ kids/programsの場所を表示していません。

これを取得する方法はありますか?多分WPはこれのためのタグを内蔵していますか?

乾杯!

答えて

-1

は、現在の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

質問の最後の部分をもう一度お読みください。 REQUEST_URIが正しいURLに解決されていません。 –

0

ワードプレスget_permalink()機能が完全にhttp://codex.wordpress.org/Function_Reference/get_permalinkで記述されています。ここで使用法は次のとおりです。

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

あなたはループの外で動作しているので、あなたが述べたように、あなただけのget_permalink()を呼び出すことはできません、あなたが関数に$ IDを渡す必要があります。ループの内側から$ idの値を設定してからget_permalink($id)を呼び出す前にISSET($id) —を使用して—を安全にすることができます。

get_permalink(ループ外でテストできましたが、mod_rewriteルールでセットアップできません)を試した後に問題がある場合は、ループ内からまだ$ idを設定してくださいその後、手動で「:// YOURSERVERNAME/HTTP」の後に連結し、このようなものを使用して、カテゴリにURLを構築

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

私はこれを読んでいましたが、この部分は私にもう一度推測されました: "IDパラメータなしで投稿ページ(インデックス、アーカイブなど)のThe Loopの外側で使用された場合、Theの最後の投稿のURLが返されますループ、現在のページのパーマリンクではありません。そして、これは間違いなくループの外側です。 –

+0

あなたのコメントに対する回答を編集しました。それが役立つかどうかを教えてください。 – schellack

1

私も書き換えを使用していますし、これは魔法のように私のために働いている:

$ _SERVER ['REDIRECT_SCRIPT_URL']

もご利用いただけます

$ _SERVER ['REDIRECT_SCRIPT_URI']

+0

これはJoomlaで動作します.JUri :: current()はそうではありません。 –