如何从短码内容中检索图片ID?

时间:2017-09-26 作者:Nico

我希望我的客户只需将他们的图像放到WordPress编辑器中,而我的自定义主题脚本就可以处理其他所有事情。无论是画廊、旋转木马还是其他什么。因此,我通常不使用插件,而是让它们将图像包装成一个短代码。像这样:[images] 图1,图2[/images]

在代码方面,这意味着我必须摆脱标准WordPress输出(这不是问题),取而代之的是检索图像的ID。一旦检索到ID,我就可以轻松地生成任何其他输出。这是我检索所需ID的方式:

function register_shortcodes() {
  add_shortcode( \'images\', \'get_image_data\' );
}

function get_image_data( $atts, $image_data_input = null ) {

  /*
  * Find CSS classes generated by WordPress (like \'wp-image-36\')
  * and store them into array $image_classes
  */
  preg_match_all( \'/wp-image-[0123456789]*/\', $image_data_input, $image_classes );

  /* Loop through array $image_classes */
  $n = 0;
  foreach ( $image_classes[0] as $image_class ) {

    /* Crop class names to ID only */
    $image_id = substr( $image_class, 9 );

    /*  Retrieve image metadata by ID, store ID into array $images */
    $images[$n][\'id\'] = $image_id;

    $n++;
  }

  /*
  * Loop through array $images and generate $image_data_output
  * by adding the desired values
  */
  $image_data_output = \'\';

  foreach ( $images as $single_image ) {
    $image_data_output .= $single_image[\'id\'] . \', \';
  }

  return ( $image_data_output );
}
因此,我的问题是:我的代码运行良好,但是否存在better 如何仅为我的短代码内容(而不是所有附加到帖子的媒体)检索ID?我认为搜索CSS类将它们裁剪到ID中是一种解决方法,但我找不到更聪明的方法。

1 个回复
SO网友:Piyush Rawat

我创建了一个从其src检索附件id的函数,可能也适用于您的案例场景

function get_attachment_id_from_src ($image_src) {
    global $wpdb;
    $id = $wpdb->get_var(\'SELECT ID FROM \'.$wpdb->posts.\' WHERE guid="\'.$image_src.\'"\');    
    return $id; 
}

结束

相关推荐

Sanitize AROUND shortcode

我有一个Wordpress plugin 它允许用户标记项目符号列表,然后在其周围添加一个短代码。不幸的是,当用户选择项目符号列表时,第一个UL没有被选择,因此他们最终会做出一个奇怪的选择。结束代码应为:[checklist-box title=\"Hello\"] <ul> <li>xxxx</li> <li>yyyy</li> <li>zzz</li> &