除了使用一些无法在wp更新上工作的自定义代码(正如您所经历的那样),为什么不使用coremeta uploader?
进入后端的“媒体->添加新内容”。只需添加一个新文件。
上载后,单击“编辑”,并使用要与图像一起输出的文本行设置附件标题。Udate附件。。。你就完了。
在您的功能中。php添加如下内容
function print_an_image( $id = \'\', $args = array() ) {
if ( ! intval($id) ) return;
$a = get_post($id);
if ( $a->post_type != \'attachment\' ) return;
$default = array(
\'size\' => \'medium\',
\'class\' => \'\',
\'link\' => false, // if numeric will link that post id, if boolean true will link the same image but in the size specified in \'link_size\' att. If false (default) will not insert a link
\'link_size\' => \'full\',
\'link_rel\' => \'\',
\'title_format\' => \'<p class="image-title">%s</p>\',
\'before\' => \'<div>\',
\'after\' => \'</div>\'
);
$args = wp_parse_args($args, $default);
extract($args);
$image = wp_get_attachment_image_src( $id, $size );
if ( ! filter_var($image[0], FILTER_VALIDATE_URL) ) return;
$title = apply_filters(\'the_title\', $a->post_title );
$url = \'\';
if ( is_numeric($link) && $link > 0 ) {
$url = get_permalink($link);
} elseif ( $link === true || $link === \'true\' ) {
$url = (array) wp_get_attachment_image_src( $id, $link_size );
$url = filter_var($url[0], FILTER_VALIDATE_URL) ? $url[0] : \'\';
}
$out = \'\';
if ( is_string($before) && ! empty($before) ) $out .= $before;
if ( ! empty($url) ) {
$out .= sprintf(\'<a href="%s"\', esc_url($url) );
if ( ! empty($link_rel) ) $out .= sprintf(\' rel="%s"\', esc_attr($link_rel) );
$out .= sprintf(\' title="%s"\', esc_attr($title) ) . \'>\';
}
$format = \'<img src="%s" width="%d" height="%d" alt="%s"\';
if ( ! empty($class) ) $format .= \' class="%s"\';
$out .= sprintf($format, esc_url($image[0]), $image[1], $image[2], esc_attr($title), esc_attr($class)) . \'/>\';
if ( ! empty($url) ) $out .= \'</a>\';
$out .= sprintf($title_format, esc_html($title) );
if ( is_string($after) && ! empty($after) ) $out .= $after;
return $out;
}
function print_an_image_sh( $atts ) {
if ( ! isset($atts[\'id\']) || empty($atts[\'id\']) ) return;
$id = $atts[\'id\'];
unset($atts[\'id\']);
return print_an_image( $id, $atts );
}
add_shortcode( \'myimg\', \'print_an_image_sh\' );
最简单的用法是
[myimg id="10"]
其中10是图像的id。它将以中等大小打印图像,标题用p包裹,两者都用div包裹。
使用shortcode atts,您可以配置所有内容:图像的大小、类、图像是否应该以其他大小链接相同的图像或链接特定的帖子、链接的“rel”属性(对于lightbox脚本很有用)、如何输出标题以及在图像前后放置的内容。
高级使用示例:
[myimg id="10" size="thumb" class="my_image_thumb" link="true" link_size="full" link_rel="lightbox" title_format="<h3>%s</h3>" before="<div class=\'my_image_wrap\'>"]
当然是
print_an_image
函数也可以用作模板标记,第一个参数是图像id,第二个参数是参数数组:
echo print_an_image(10, array(\'size\'=>\'large\') );