我编写此短代码是为了获取我指定的文件名,并将其输出为带有title和alt标记的图像:
function cwc_pkmn($atts) {
extract(shortcode_atts(array(
"name" => \'http://\',
), $atts));
return \'<img src="/path/to/file/\'.$name.\'.png" alt="\'.$name.\'" title="\'.$name.\'" />\';
}
add_shortcode("pkmn", "cwc_pkmn");
我所有的文件名都是小写的,单词之间有一个“-”。是否可以让输出将a后面的每个字母大写,并用空格替换?所以现在,当我这样做上面的短代码时:
[pkmn name="mr.-deeds"]
我将此作为输出:
<img src="/path/to/file/mr.-deeds.png" alt="mr.-deeds" title="mr.-deeds">
但是,是否可以让输出使用title和alt标记来执行此操作
<img src="/path/to/file/mr.-deeds.png" alt="Mr. Deeds" title="Mr. Deeds">
非常感谢你!
最合适的回答,由SO网友:Vasu Chawla 整理而成
Try this out. . .
function cwc_pkmn( $atts = array(), $content = \'\' )
{
// ------------------------
// Settings:
$path = \'/path/to/file/\';
$ext = \'png\';
// ------------------------
// Shortcode input:
$atts = shortcode_atts(
array( \'name\' => \'\' ),
$atts,
\'pkmn_shortcode\'
);
// Sanitize input:
$name = esc_attr( $atts[\'name\'] );
// Init:
$words_ucfirst = array();
// Capitalize the first letter in each word:
$words = explode( \'-\', $name );
foreach( $words as $word )
{
$words_ucfirst[] = ucfirst( $word );
}
$name_mod = esc_attr( join( \' \', $words_ucfirst ) );
return sprintf( \'<img src="%s%s.%s" alt="%s" title="%s" />\',
$path,
$name,
$ext,
$name_mod,
$name_mod
);
}
add_shortcode( \'pkmn\', \'cwc_pkmn\' );