我还没有尝试过你的代码,但它似乎已经有一条双线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.php
orsingle.php
中才能知道帖子的 slug 和帖子的 id 是什么。
line:$url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf";
需要在 loop:<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
或您使用的任何其他循环中。
这应该可以完成工作:)