【问题标题】:How to retrieve Page slug in wordpress?如何在 wordpress 中检索 Page slug?
【发布时间】:2015-12-23 13:41:12
【问题描述】:
function get_template_url($template_name){
    global $wpdb;
    $ContactPage = $wpdb->get_results( "SELECT post_id FROM wp_postmeta WHERE meta_value = '$template_name'" );
    foreach ($ContactPage as $slug) {
        if(get_page($slug->post_id))echo get_option('home').'/?p='.$slug->post_id;
    }
}

上面的函数可以正常获取页面的ID

我使用下面的代码来获取页面链接

<a href="<?php get_template_url('template-contact.php') ?>" class="widget" data-toggle="tooltip" data-placement="bottom" data-title="CONTATTO"><span class="ico ico-phone-btn"></span></a>

但链接返回到 localhost/?p=485 我怎样才能通过 slug 而不是 id 将 url 获取为 /localhost/contact-us?

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您在函数中呼应了一个 ID...不是永久链接。你应该改用get_permalink()

    function get_template_url($template_name){
        global $wpdb;
        $permalink = '#';  // provide a default
    
        $ContactPage = $wpdb->get_results( "SELECT post_id FROM wp_postmeta WHERE meta_value = '$template_name'" );
        foreach ($ContactPage as $slug) {
            if (get_page($slug->post_id)) {
                $permalink = get_permalink($slug->post_id);
            }
        }
    
        return $permalink;
    }
    

    然后:

    <a href="<?php echo get_template_url('template-contact.php'); ?>" class="widget" data-toggle="tooltip" data-placement="bottom" data-title="CONTATTO">
        <span class="ico ico-phone-btn"></span>
    </a>
    

    但是,您的代码还存在其他问题。例如,如果$ContactPage 不是数组会发生什么?如果多个页面使用该模板(因此返回多个 URI)会发生什么?你为什么用get_page()

    【讨论】:

    • 您好 rnevius,您的代码在我的 wordpres 网站上运行良好,但在其他一些服务器上却无法运行,您知道是什么原因吗?可能是mysql版本问题?很抱歉回到这个话题,但我真的不明白为什么会发生这种情况,这在某些 wordpress 网站上有效,而在其他一些网站上无效-。 :(
    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2014-02-22
    • 2016-09-24
    • 2020-04-24
    • 2019-02-16
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多