将Alt/TITLE标签资本化到图像HTML中,重新排序HTML输出

时间:2015-02-25 作者:Jon

几年前,有人为我写了这篇文章末尾的两段代码。我目前正在尝试修改它们,但在一个小时的谷歌搜索和反复破坏Wordpress之后,我运气不太好。

现在,第一个代码采用上载文件名。jpg,并将其更改为“上载文件名”,作为图像的alt和title标记。第二个代码添加rel="highslide"class="highslide" 到每个图像的链接。这是在Wordpress中插入图像时输出的内容:

<a class="highslide" href="http://domain.com/wp/uploads/0215/the-name-of-the-file.jpg" rel="highslide"><img class=" alignright" title="the name of the file" src="http://domain.com/wp/uploads/0215/the-name-of-the-file-217x200.jpg" alt="the name of the file" width="217" height="200" /></a>
我要做的是将图像的alt和title标记中每个单词的第一个字母大写,以便输出到“文件名”

对于HTML链接,我还想移动class="highslide" 直到最后,以便按照href, rel, 然后class. 即使在切换代码片段时,我也不知道如何更改任何东西的顺序。我知道重新排序听起来很挑剔,但我和我的编剧们做了很多手动HTML编辑,这种顺序是我们在Wordpress中习惯的。

对于图像HTML,我想按照src, height, width, alt, title, 然后class.

我希望其他人也能使用这些很酷的代码!非常感谢。

/** USE FILENAME FOR ALT AND TITLE TAGS WHEN INSERTING */
function wpse_120228_seomadness($html, $id, $caption, $title, $align, $url, $size, $alt) {

    $alttitle = str_replace(\'-\', \' \', $alt);
    $img      = get_image_tag($id, $alttitle, $alttitle, $align, $size);
    $html     = \'<a href="\' . esc_attr($url) . \'">\' . $img . \'</a>\';

    return $html;
}
add_filter( \'image_send_to_editor\', \'wpse_120228_seomadness\', 10, 9 );


/** ADD HIGHSLIDE CLASSES TO HYPERLINKED IMAGES */
function add_highslide_attr( $html ) {
    preg_match_all(\'/(<a[^>]*>)(.*)/i\', $html, $result);

    if( !isset($result) || !isset($result[1][0]) || ! $result[1][0] )
        return $html;

    $anchor = $result[1][0];

    if( strstr($anchor, \'rel=\') )
        $anchor = str_replace(\'rel="\', \'rel="highslide \', $anchor);
    else
        $anchor = str_replace(\'href=\', \'rel="highslide" href=\', $anchor);

    if( strstr($anchor, \'class=\') )
        $anchor = str_replace(\'class="\', \'class="highslide \', $anchor);
    else
        $anchor = str_replace(\'href=\', \'class="highslide" href=\', $anchor);

    $html = $anchor . $result[2][0];

    return $html;
}
add_filter( \'image_send_to_editor\', \'add_highslide_attr\', 10 );

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

我会给你一个部分的回答。

在第一个函数中,您可以使用ucwords() PHP函数:

$alttitle = ucwords( str_replace( \'-\', \' \', $alt ) );
第二项任务更复杂。我没有现成的解决方案,但方向应该是从HTML中提取属性和值(使用preg_match()), 将它们存储在变量中,并以不同的顺序连接。

现在是旁注。我个人更喜欢过滤内容的输出,而不是修改发送给编辑器的代码。如果我的mod(例如类名或HTML结构)与某些插件或主题发生冲突,我可以轻松地进行调整,因为它们没有存储在数据库中。

结束

相关推荐

Unattaching unlinked images

据我所知,默认WP行为:将图像上载到帖子并保存(作为草稿或已发布帖子)时,图像将“附加”到帖子。进入“媒体”>“库”>“上载到”列,可以再次检查这一点。为了将图像标记为未附加到任何帖子,必须手动删除帖子。(还有别的办法吗?)我的主要问题是:如果图片没有在现有帖子中插入或链接,我有没有办法告诉WordPress将其标记为“未附加”?编辑要澄清:我们将20张(或更多)图片上传到帖子并插入。这些都是WordPress自动附加到帖子上的。我们希望这样做,因为我们的主题模板会在每篇文章中提取所有附加的图