如何在自定义函数中获取$Attach->ID

时间:2018-05-04 作者:klewis

这是我现在在附件主题模板中拥有的内容。。。

//GET THE URL OF THE ATTACHMENT
$parsed = parse_url( wp_get_attachment_url( $attachment->ID ) );
$url = dirname( $parsed [ \'path\' ] ) . \'/\' . rawurlencode( basename( $parsed[ \'path\' ] ) );

//GET THE ATTACHMENT TYPE FOR ICON
$mtype = get_post_mime_type($attachment->ID); 
$mtypeicon = \'\';
if ($mtype == "application/pdf") {
    $mtypeicon = "<i class=\'far fa-file-pdf\'></i>";
}
我很满意。它起作用了。但现在,我正在将此代码移到我的函数中。php,这样我就可以add_action/do_action 序列正确的表达方式是什么$attachment->ID 从自定义函数中?

非常感谢!

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

要获取附件ID,您需要使用get_posts() 使用post_type 作为“附件”和post_parent 作为您感兴趣获取附件的帖子的ID。

namespace StackExchange\\WordPress;
function the_post( \\WP_Post $post, \\WP_Query $query ) {
  //* Get post attachments
  $attachments = \\get_posts( [
    \'post_type\'      => \'attachment\',
    \'posts_per_page\' => -1,
    \'post_parent\'    => $post->ID,
    \'exclude\'        => get_post_thumbnail_id()
  ] );
  //* There can be more than one attachment per post, so loop through them
  foreach( $attachments as $attachment ) {
    //* Maybe do some sanity checks here
    $parsed = parse_url( \\wp_get_attachment_url( $attachment->ID ) );
    //* Do something useful with the parsed URL
  }
}
\\add_action( \'the_post\', __NAMESPACE__ . \'\\the_post\', 10, 2 );
上面,我正在使用the_post 获取帖子父级的帖子ID的操作。根据您的用例,您可以使用另一个钩子和get_the_ID() 获取post父级的ID。

结束