2014-03-04 39 views
0

我在我的wordpress functions.php文件中使用下面的代码来创建一个自定义的meta框内我的自定义帖子类型,以便让我把PDF附加到我的网页。然而,链接带我到附件页面,而不是文件的URL,我不能为我的生活找出原因!任何帮助将非常感激。WordPress的链接到文件的URL而不是附件页

add_action("admin_init", "pdf_init"); 
add_action('save_post', 'save_pdf_link'); 
function pdf_init(){ 
     add_meta_box("my-pdf", "PDF Document", "pdf_link", "post", "normal", "low"); 
     } 
function pdf_link(){ 
     global $post; 
     $custom = get_post_custom($post->ID); 
     $link = $custom["link"][0]; 
     $count = 0; 
     echo '<div class="link_header">'; 
     $query_pdf_args = array(
       'post_type' => 'attachment', 
       'post_mime_type' =>'application/pdf', 
       'post_status' => 'inherit', 
       'posts_per_page' => -1, 
       ); 
     $query_pdf = new WP_Query($query_pdf_args); 
     $pdf = array(); 
     echo '<select name="link">'; 
     echo '<option class="pdf_select">SELECT pdf FILE</option>'; 
     foreach ($query_pdf->posts as $file) { 
      if($link == $pdf[]= $file->guid){ 
       echo '<option value="'.$pdf[]= $file->guid.'" selected="true">'.$pdf[]= $file->guid.'</option>'; 
       }else{ 
       echo '<option value="'.$pdf[]= $file->guid.'">'.$pdf[]= $file->guid.'</option>'; 
       } 
       $count++; 
     } 
     echo '</select><br /></div>'; 
     echo '<p>Selecting a pdf file from the above list to attach to this post.</p>'; 
     echo '<div class="pdf_count"><span>Files:</span> <b>'.$count.'</b></div>'; 
} 
function save_pdf_link(){ 
     global $post; 
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; } 
     update_post_meta($post->ID, "link", $_POST["link"]); 
} 
add_action('admin_head', 'pdf_css'); 
function pdf_css() { 
     echo '<style type="text/css"> 
     .pdf_select{ 
       font-weight:bold; 
       background:#e5e5e5; 
       } 
     .pdf_count{ 
       font-size:9px; 
       color:#0066ff; 
       text-transform:uppercase; 
       background:#f3f3f3; 
       border-top:solid 1px #e5e5e5; 
       padding:6px 6px 6px 12px; 
       margin:0px -6px -8px -6px; 
       -moz-border-radius:0px 0px 6px 6px; 
       -webkit-border-radius:0px 0px 6px 6px; 
       border-radius:0px 0px 6px 6px; 
       } 
     .pdf_count span{color:#666;} 
       </style>'; 
} 
function pdf_file_url(){ 
     global $wp_query; 
     $custom = get_post_custom($wp_query->post->ID); 
     echo $custom['link'][0]; 
} 

如果有人想知道,我也源自这个代码WPSnipp

回答

1

您应该使用wp_get_attachment_url($id);函数来获取附件的URL。

所以您的代码将看起来更像是这样的:

foreach ($query_pdf->posts as $file) { 
      if($link == $pdf[]= wp_get_attachment_url($file->ID)){ 
       echo '<option value="'.$pdf[]= wp_get_attachment_url($file->ID).'" selected="true">'.$pdf[]= wp_get_attachment_url($file->ID).'</option>'; 
       }else{ 
       echo '<option value="'.$pdf[]= wp_get_attachment_url($file->ID).'">'.$pdf[]= wp_get_attachment_url($file->ID).'</option>'; 
       } 
       $count++; 
     } 

链接应该带你到PDF上,而不是单个附件模板。

注意:我只对foreach循环进行了采样,因为这是正在保存的值。

+0

这完美的作品!非常感谢你,我有点傻,我忘记了需要重新保存这些值才能使其工作! – Giles

相关问题