Wordpress缺少附件链接

时间:2013-12-24 09:26:19

标签: php wordpress attachment custom-post-type

我已将pdf附加到自定义帖子类型下的帖子 - 我已创建了一个供用户下载的链接,但所有显示的内容都是Missing Attachment。我已经检查了管理面板,我肯定将它附加到帖子中 - 我似乎无法将其链接到它。

我的代码是:

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 10;

    $args = array( 'post_type' => 'stores', 'orderby' => 'title', 'order' => 'asc', 'posts_per_page' => $paged );

    $success = new WP_Query( $args );


    $output  = '';
    $output .= sprintf( "<table class='stores'>" );
    $output .= sprintf( "<tr><th>File Name</th><th>Date added</th><th>Download</th></tr>" );

    while( $success->have_posts() ) {

            $success->the_post();

            $output .= sprintf( "<tr>" );
            $output .= sprintf( "<td>%s</td>", get_the_title() );
            $output .= sprintf( "<td>%s</td>", get_the_date() );
            $output .= sprintf( "<td><a href='%s'>link</a></td>", wp_get_attachment_link()  );
            $output .= sprintf( "<tr>" );

    }

        $output .= sprintf( "</tr></table>" );
    return  $output;

1 个答案:

答案 0 :(得分:1)

wp_get_attachment_link()需要附件的ID,而不是附件所附的帖子,以便它可以获取链接。 -

wp_get_attachment_link(1234); // Replace 1234 with your relevant ID

要查找相关ID,请登录管理区域,点击Media,然后点击要链接的附件。最后,检查地址栏,您会看到http://www.mywebsite.com/wp-admin/post.php?post=7814&action=edit之类的内容 - 您需要的ID是post=之后的内容。


其他建议

首先,我在您的查询中注意到您混淆了posts_per_pagepaged个参数。基本上你是在告诉你的查询检查查询字符串中是否有页面设置,否则显示第10页。试试这个 -

$args = array(
    'post_type' =>      'stores',
    'orderby' =>        'title',
    'order' =>          'ASC',
    'paged' =>          get_query_var('paged'), // The page to show
    'posts_per_page' => 10                      // How many posts to show on the page
);

我还注意到你使用sprintf()而不管它是否真的需要。这会减慢速度,但更进一步,对于一个变量,我根本不会使用它,因为它更快。另请注意,交换"引号的'引号会加快速度(作为'''检查变量引用以转换为String)。对于Loop我推荐此代码 -

$success = new WP_Query( $args );

if( $success->have_posts() ) :

    $output.= '<table class="stores">';
    $output.= '<tr><th>File Name</th><th>Date added</th><th>Download</th></tr>';

    while( $success->have_posts() ) : $success->the_post();

        $child_args = array(
            'numberposts' => 1,
            'order' => 'ASC',
            'post_mime_type' => 'pdf',
            'post_parent' => get_the_ID(),
            'post_status' => null,
            'post_type' => 'attachment',
        );
        $attachments = get_children($child_args);

        if(attachments) :
            $attachment_ID = $attachment[0]->ID
        endif;

        $output.= '<tr>';
        $output.= '<td>'. get_the_title() .'</td>';
        $output.= '<td>'. get_the_date() .'</td>';
        $output.= '<td><a href="'. wp_get_attachment_link($attachment_ID) .'">link</a></td>';
        $output.= '<tr>';

    endwhile;

    $output.= '</tr></table>';

endif;

return $output;

最后,如果你没有特别需要返回你的输出,你可以直接输出它,再次加快速度。