1

我正在尝试做到这一点,但在解决这个问题时遇到了很多问题。我知道我是一个完整的 php 菜鸟,但我真的需要弄清楚,所以我很感激你的帮助。

我正在尝试将“更正”的 URL 传递给我网站上的小部件,因此如果人们单击按钮,他们将以 pdf 格式下载他们所在的页面。

我的网站使用友好的网址http://www.sample.com/friendly/url/this/thing.html

我需要做的是获取当前网址并将友好更改为 pdf 并将结果放入按钮中。

我想出的是#failsauce 在#shitsandwich 的#filetofpain 上下毛毛雨

<?php
function curPageURL() {
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] !=          "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
$port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
$url = ($isHTTPS ? 'https://' :    'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
return $url;
}

echo curPageURL();
?>

这导致了我的网址。

我什至还没有替换 url 部分的部分,因为我不知道如何获取 url 或将其分解。这是可悲的。

所以就像一个带着锡杯和破布的乞丐一样,我恳求帮助:)

我需要做的是将返回的网址分解成碎片......

如果它返回“www.mysite.com/01/05/2013/9013/your-mom-wears-combat-boots/”,我需要将其更改为:“www.mysite.com/pdf/9013/your-mom -wears-combat-boots.pdf"

(可能在它前面加上 http:// 以及这里的发布机制我发布链接的东西我没有声誉,所以它不会让我把完整的 http:// www mysite com 放在示例中)

4

3 回答 3

3

您正在使用双重echo echo $current_url;更改echo $current_url;

于 2013-07-10T14:06:58.120 回答
0

我还没有尝试过你的代码,但它似乎已经有一条双线echo..

无论如何,我想给你一个我喜欢使用的非常简单的方法:

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

这个函数的作用是每次你调用curPageURL()你都会得到你当前的页面 url,就像它在 url 栏中显示的那样。你可以随心所欲地使用它。

我希望这能解决你的问题:)

编辑:

要使用它来获取 url,而不是将结尾.html更改为.pdf您需要做的所有事情:

$url = curPageURL(); // gets back www.sample.com/page.html
$newurl = str_replace(".html", ".pdf", $url); // changes url to www.sample.com/page.pdf

此代码使用答案顶部的函数

编辑2:

如果它返回您:www.mysite.com/01/05/2013/9013/your-mom-wears-combat-boots/ 那么您将需要做:

$url = curPageURL(); // gets back www.sample.com/page/
$newurl = substr_replace($url, "", -1) // changes url to www.sample.com/page
$newurl .= ".pdf" // adds the .pdf to the url so you get www.sample.com/page.pdf

编辑3:

首先 - 很高兴你使用 wordpress :)

现在,wordpress codex 变得更容易,实际上更容易做到:为此我们需要进行一些更改,同时更改 curPageURL 函数。

function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
         $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"];
    } 
    else {
        $pageURL .= $_SERVER["SERVER_NAME"];
    }
    return $pageURL;
}

我会解释:
$_SERVER["SERVER_NAME"]给我们域名,比如domain.com.
$_SERVER["REQUEST_URI"]将域之后的所有内容返回给我们,路径。在我们的例子中是例如:01/03/2013/9013/page
所以现在该curPageURL函数只返回域名。

现在让我们开始研究下一步:

 $url = curPageURL(); // gets back http://www.sample.com
 $url .= "/pdf"; // we add the /pdf to the url so it is now: http://www.sample.com/pdf
 $postid = get_the_ID(); // gives us the post ID. for example 9013
 $url .= "/" . $postid; // now we take the post ID and add it to the url: http://www.sample.com/pdf/9013
 $the_post = get_post($postid); // get the post by the ID
 $post_slug = $the_post['post_name']; // get the slug of the post 
 $url .= "/" . $post_slug; // adds the slug to the url: http://www.sample.com/pdf/9013/your_mom_wears_combat_boots
 $url .= ".pdf"; // finally add the pdf to the url so now you get: http://www.sample.com/pdf/9013/your_mom_wears_combat_boots.pdf

这里没有评论:

 $url = curPageURL(); 
 $url .= "/pdf";
 $postid = get_the_ID();
 $url .= "/" . $postid;
 $the_post = get_post($postid);
 $post_slug = $the_post['post_name'];
 $url .= "/" . $post_slug;
 $url .= ".pdf";

如果你想最小化这些行:

 $url = curPageURL() . "/pdf/" . get_the_ID(); // url is now: www.domain.com/pdf/postid
 $the_post = get_post(get_the_ID());
 $url .= "/" . $the_post['post_name'] . ".pdf"; //url is now: www.domain.com/pdf/postid/post_slug.pdf

现在你可以echo通过echo $url;

更新,最后一次编辑(4):

我犯了一个错误,关于得到蛞蝓。
我用过:$the_post = get_post(get_the_ID());然后拿了蛞蝓,名字:$the_post['post_name']

这是不对的。

消除蛞蝓的最佳方法是运行代码:
$post_slug = basename(get_permalink());

所以这有点像它应该看起来的样子:

 $url = curPageURL() . "/pdf/" . get_the_ID(); // url is now: www.domain.com/pdf/postid
 $post_slug = basename(get_permalink()); //gets the post slug
 $url .= "/" . $post_slug . ".pdf"; //url is now: www.domain.com/pdf/postid/post_slug.pdf

我们可以让它变得更加最小化:

 $url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf"; 

现在你可以echo $url;

不要忘记:这个函数需要在page.phporsingle.php中才能知道帖子的 slug 和帖子的 id 是什么。
line:$url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf";需要在 loop:<?php if (have_posts()) : while (have_posts()) : the_post(); ?>或您使用的任何其他循环中。

这应该可以完成工作:)

于 2013-07-10T14:12:57.783 回答
0

您可以使用$_SERVER["HTTP_HOST"]and$_SERVER["REQUEST_URI"]来获取请求的 URL。

于 2013-07-10T14:07:19.403 回答