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?
答案 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()
?