以下是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。有人知道怎么了吗?
最合适的回答,由SO网友:birgire 整理而成
我认为您缺少回调输入参数的数量,因此请尝试以下方法:
add_filter( \'wp_get_attachment_url\',\'mfeu_filter_attachment_url\', 10, 2 );
| |
Priority _____| |
Number of arguments ________|
默认值为
10, 1
, 所以你目前只传递
$url
而不是第二个
$post_id
论点