如何在wordpress中检索Page slug?

时间:2015-12-23 13:41:12

标签: wordpress

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?

1 个答案:

答案 0 :(得分:0)

你在函数中回复了一个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()