获取地址栏中显示的URL

时间:2010-12-14 15:37:04

标签: php wordpress url-rewriting wordpress-theming

我正在使用一些URL重写,除了Wordpress本身的URL重写之外。

基本的想法是我使用一个类别页面,其地址看起来像是属于其他地方,因此/ blog / type / kids是WP中的真正类别。我用/ kids /中的.htaccess文件重写了这个类别,使类别看起来像是一个名为/ kids / programs的页面,这个代码在kids文件夹中:

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

这发生在站点中的两个不同位置,但两者都在后台加载相同的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显示/ blog / type / kids。所以我们都没有向我展示真正展示的/ kids / program位置。

任何想法如何获得这个?也许WP有内置标签吗?

干杯!

4 个答案:

答案 0 :(得分:1)

我也在使用Rewrite,这对我来说就像一个魅力:

$ _ SERVER [ 'REDIRECT_SCRIPT_URL']

您也可以使用

$ _ SERVER [ 'REDIRECT_SCRIPT_URI']

答案 1 :(得分:0)

WordPress get_permalink()功能在http://codex.wordpress.org/Function_Reference/get_permalink完整描述。以下是用法:

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

由于您在循环外操作,正如您所提到的,您不能只调用get_permalink(),您必须将$ id传递给函数。你可以在循环中设置$ id的值,然后在调用ISSET($id)之前使用get_permalink($id) - 是安全的。

如果在尝试使用get_permalink之后出现任何问题(我能够在循环外测试它,但我没有使用mod_rewrite规则进行设置),你可以在循环中使用仍然设置$ id然后使用类似的东西手动构建带有类别的URL,在'http:// yourservername /'之后连接:

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

答案 2 :(得分:0)

尝试

@ReactMethod public void paymentRequestWithCardForm(ReadableMap params, final Promise promise) { Activity currentActivity = getCurrentActivity(); try { ArgCheck.nonNull(currentActivity); ArgCheck.notEmptyString(mPublicKey); final AddCardDialogFragment cardDialog = AddCardDialogFragment.newInstance( mPublicKey, getErrorCode(mErrorCodes, "cancelled"), getDescription(mErrorCodes, "cancelled"), params.hasKey("createCardSource") && params.getBoolean("createCardSource") ); cardDialog.setPromise(promise); cardDialog.show(currentActivity.getSupportFragmentManager(), "AddNewCard"); } catch (Exception e) { promise.reject(toErrorCode(e), e.getMessage()); } }

URL变量$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'; $url = $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];将为您提供URL,如浏览器的地址栏中所示。

答案 3 :(得分:-1)

返回当前网址:

<?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;
    }
?>