WordPress通过页面使用的模板获取页面链接

LMS
1.8K+ 9

获取页面链接 wordpress 有个专用的函数 get_page_link 不过这个函数需要知道页面的 ID,问题的关键就是这个 ID。

wordpress 的页面一般是根据需要建立的,如果使用默认模板的页面一般没多大用处,比如 about 页面,只能写一些文字贴些图片,自定义不强。而是用了自定义模板的页面,内容的表现就更加丰富了,比如:留言板、链接、投稿、存档等一大批的自定义页面。

因为这些页面需要根据特殊用途写专用的自定义模板,其实是可以在主题里强制建立页面,这种强制建立的页面,页面名称和别名就是固定的,然后使用 get_page_by_title 函数通过固定的页面名称获得页面 ID,最后获取这些特殊页面的链接,只是这样随主题生成的页面的页面名称就固定了,你要是改了名称这个方法就失效,会影响到主题的使用。

最后考虑到这些特殊页面使用的模板都比较专一,于是想到了通过页面模板来获取页面链接,找了一下 wordpress 官方的函数,貌似没有通过页面模板获取页面 ID 的,没办法,只好强插数据库了。

function get_pagelink_through_template($page_temp){
    global $wpdb;
    $page_id = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta LEFT OUTER JOIN $wpdb->posts ON ($wpdb->postmeta.post_id = $wpdb->posts.ID ) WHERE meta_key = '_wp_page_template' AND meta_value = '".$page_temp."' AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page'");
    $pageurl = get_page_link($page_id);
    return $pageurl;
}

将上面的代码放入 functions.php 文件,然后假如我们要获取使用模板为 page-guestbook.php 的页面链接就在需要的地方使用 get_pagelink_through_template('page-guestbook.php') 就 OK 了。现在页面名可以爱怎么改都行,只要不去改主题文件及里的页面模板文件名就好(应该不会有人这么蛋疼吧!),唯一的问题就是:一个页面模板必须对应一个页面

想想,用到这个功能的人应该非常少,谁还有我蛋疼呢。。。

THE END

评论 9

  1. K'
    🏅

    帮忙了 谢啦。不过老铁你wp研究了多久了。。数据库很了解嘛

  2. tytful
    🏅

    企业主题需要从首页跳到产品页面,又要跳到购买页面,是不是应该用你这种方法?这种情况一般大家用什么方法跳转?

  3. 看了几遍,总算看明白是干嘛用的了。

发表评论

Submit