好的,这很难在标题中解释。但我在我的functions.php
中完成了这个功能我使用图片标题为所有图片链接添加标题标签。通过查找文件名并在数据库中查找,查找ID并获取正确的标题。
这是函数
add_filter('the_content', 'addshadowboxrel', 12);
add_filter('get_comment_text', 'addshadowboxrel');
function addshadowboxrel ($content) {
global $wpdb;
$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
$path = '$3.$4';
$attachment_url = basename($path);
$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
$attachment = get_post( $attachment_id );
$replacement = '<a$1href=$2$3.$4$5 title="'.$attachment->post_excerpt.'" rel="lightbox"$6>$7</a>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
一切正常:如果我用'$ 3. $ 4'的实际路径替换$ path。
但是basename函数不能正常工作吗?
答案 0 :(得分:0)
您在哪里宣布$3
和$4
?变量名称不能以数字开头。所以:
$3
$4
不能是有效的变量。你能把它们改成:
$n3
$n4
相反?试试吧!这可能是基本的,但这就是原因! :)
还要考虑使用函数preg_match_all
。查看Pattern Syntax了解详情。