将rel=lightbox添加到自定义字符串

时间:2013-06-10 作者:Pieter Goosen

我在函数中使用以下代码。php在我的摘录中显示缩略图:

function pietergoosen_kry_eerste_prentjie() {
global $post;
$first_img = \'\';
$output = preg_match_all(\'/<img.+src=[\\\'"]([^\\\'"]+)[\\\'"].*>/i\', $post->post_content, $matches);
$first_img = $matches [1] [0];

return $first_img;
}

function pietergoosen_kyk_url_bestaan($url) {
$headers = wp_get_http_headers($url);

if (!is_array($headers)) :
    return FALSE;
elseif (isset($headers["content-type"]) && (strpos($headers["content-type"],"image") !== false)) :
    return TRUE;
else :
    return FALSE;
endif;
}
function pietergoosen_verstel_prentjie_grootte($image, $alt, $newwidth, $newheight) {
if (!file_exists($image) && !pietergoosen_kyk_url_bestaan($image)) return \'\';
list($width, $height, $type, $attr) = getimagesize($image);
if (!$width || !$height) return \'\';

if ($newwidth) 
    $newheight = intval($newwidth/$width * $height);
else
    $newwidth = intval($newheight/$height * $width);
return \'<img src="\' . $image . \'" width=\' . $newwidth . \' height=\'. $newheight . \' alt=\' . $alt . \'/>\';
}
我正在将这些函数调用到我的内容中。php模板位于\\u摘录下方,如下所示:

<div class="alignleft">
        <a href="<?php the_permalink() ?>">
          <?php echo pietergoosen_verstel_prentjie_grootte(pietergoosen_kry_eerste_prentjie(), get_the_title(), 125, 0); ?>
       </a>
   </div>
我现在需要做的是将rel=“lightbox”属性添加到显示的缩略图中。以下是我如何处理所有其他图像的方法:

function pietergoosen_voeg_lightbox_rel_attribute_by_the_content($content) {
   global $post;
   $pattern ="/<a(.*?)href=(\'|\\")(.*?).(bmp|gif|jpeg|jpg|png)(\'|\\")(.*?)>/i";
   $replacement = \'<a$1href=$2$3.$4$5 rel="lightbox" title="\'.$post->post_title.\'"$6>\';
   $content = preg_replace($pattern, $replacement, $content);
   return $content;
}

add_filter(\'the_content\', \'pietergoosen_voeg_lightbox_rel_attribute_by_the_content\');
我无法将此方法用于摘录缩略图。你有什么想法可以让它发挥作用吗。

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

好的,这就是我在一天结束时编辑的内容,它工作得很好。我替换了:

<div class="alignleft">
    <a href="<?php the_permalink() ?>">
      <?php echo pietergoosen_verstel_prentjie_grootte(pietergoosen_kry_eerste_prentjie(), get_the_title(), 125, 0); ?>
   </a>
</div>
使用:

<div class="alignleft">
        <a href="<?php echo pietergoosen_kry_eerste_prentjie() ?>" title="<?php printf( the_title_attribute( \'echo=0\' ) ); ?>" rel="lightbox">
          <?php echo pietergoosen_verstel_prentjie_grootte(pietergoosen_kry_eerste_prentjie(), get_the_title(), 125, 0); ?>
       </a>
   </div> 

SO网友:Matt Keys

如果看不到摘录缩略图的html输出,很难说出代码不工作的原因。

但我也会调查str\\u replace(http://php.net/manual/en/function.str-replace.php) 作为您问题的可能解决方案。

结束

相关推荐

如何只从wp_content()检索文本,而不从wp_excerpt()检索文本?

我目前正在用WordPress 3.5开发一个网站,我需要检索Post Text (Only text, not include images) 在Archive Page. 我可以用wp_excerpt() 方法没有任何问题。但对我来说,主要的问题是我无法获得准确的文本布局。wp_excerpt() 方法返回忽略所有额外空格和换行符的文本。我该怎么办?我想我会Only Post Text with Exact Layout 如果我能从wp_content() 方法提前感谢您的帮助!