WP_GET_ATTACH_URL筛选器不接受两个参数

时间:2016-02-24 作者:Samuel Reid

以下是wp_get_attachment_url 过滤器:

/**
 * Filter the attachment URL.
 *
 * @since 2.1.0
 *
 * @param string $url     URL for the given attachment.
 * @param int    $post_id Attachment ID.
 */
这是我尝试的筛选器:

function mfeu_filter_attachment_url( $url, $post_id ) {
  return (get_post_meta($post_id,\'_mfeu_external_url\',true) != \'\') ? get_post_meta($post_id,\'_wp_attached_file\',true) : $url;
}
add_filter(\'wp_get_attachment_url\',\'mfeu_filter_attachment_url\');
我经常遇到以下错误:

[24-Feb-2016 21:15:55 UTC] PHP Warning:  Missing argument 2 for mfeu_filter_attachment_url() in .../wp-content/plugins/media-external-url/media-external-url.php on line 20
[24-Feb-2016 21:15:55 UTC] PHP Notice:  Undefined variable: post_id in .../wp-content/plugins/media-external-url/media-external-url.php on line 21
虽然核心WordPress文件中的描述post.php 让它看起来如此!我的过滤器需要能够知道它处理的是哪个附件,以便获取附件的元并使用它来决定如何返回url。有人知道怎么了吗?

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

我认为您缺少回调输入参数的数量,因此请尝试以下方法:

add_filter( \'wp_get_attachment_url\',\'mfeu_filter_attachment_url\', 10, 2 );
                                                                  |  |
                                                 Priority    _____|  |
                                      Number of arguments    ________|
默认值为10, 1, 所以你目前只传递$url 而不是第二个$post_id 论点