我正在创建一个类似于自定义菜单小部件的简短代码,但我是从下拉列表中选择页面,而不是在wordpress内创建菜单(我也在其中添加了颜色,因此我无法只需使用常规的wordpress菜单小部件).
到目前为止,还不错,这只是困扰我的一件事.我想检查我所在的页面是否与列表中的页面匹配(在实际页面上).我用谷歌搜索了一下,发现
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
因此,如果要添加一个称为当前页面的类,只需查看$actual_link是否与下拉列表中选择的链接相匹配.
我正在页面扩展插件The Creator中工作,因此我知道如何在其中创建有效的简码.我的页面下拉列表是通过创建一个数组来创建的,该数组将页面url作为键并将页面名称作为值.我的循环是:
$args = array (
'post_type' => 'page',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
);
$pages = get_posts($args);
$forms = array();
if(is_array($pages)){
foreach ($pages as $page) {
$forms[$page->url] = $page->post_title;
}
}
而且效果很好.除了我从中获得的url的形式为:
http://www.example.com/?page_id=150
http://www.example.com/my_page_name
该ID是正确的,如果我单击“菜单”链接,我将转到该页面(所需结果).但是现在我不能只是说:
$current = ($actual_link == $link) ? 'current_page' : '';
其中$link是用于保存下拉列表中指向页面的链接的变量,因此我可以将其附加到列表中,以检查自己是否在当前页面上(添加current_page类).我需要出于样式目的的此类-如果我在具有此菜单简码的页面上,则在与该页面匹配的链接旁边,我将得到V形符号(>).
所以我的问题是,无论我使用什么永久链接设置,如何获取匹配的URL?有没有一种方法可以在get_posts()查询中或使用$_SERVER []变量来指定?
我正在尝试避免使用javascript,并在服务器端执行所有操作.
解决方法:
您需要将get_the_ID()放在get_permalink()内,它将返回您必须与$actual_link匹配的链接
$link = get_permalink(get_the_ID());
这样的事情.