Como posso exibir metadados de imagem?

Estou tentando adicionar um filtro para the_content que encontrará todas as imagens na publicação e append o credit metadados de anexo personalizado.

Aqui estão as funções que eu tenho:

Adiciona o campo Crédito à página de detalhes do anexo: (isso funciona)

 function attachment_field_credit( $field, $post ) { $field[ 'credit' ] = array( 'label' => 'Credit', 'input' => 'text', 'value' => get_post_meta( $post->ID, 'credit', true ), ); return $field; } 

Salva o campo de crédito: (isso funciona)

 function attachment_field_credit_save( $post, $attachment ) { if( isset( $attachment[ 'credit' ] ) ) update_post_meta( $post[ 'ID' ], 'credit', $attachment[ 'credit' ] ); return $post; } 

Procure o conteúdo de todas as imagens disponíveis: (isso funciona)

 function find_images( $content ) { return preg_replace_callback( '/(]+)(src\s*=\s*"[^"]+")([^>]+>)/i', array( $this, 'attach_image_credit' ), $content ); } 

Acresce metadados de crédito a cada imagem: (isso não funciona)

 function attach_image_credit( $images ) { global $post; $credit = get_post_meta( $post->ID, 'credit', true ); $replacement = $images[0] . $credit; return $replacement; } 

Se eu replace $credit valor de $credit $ por Hello World! o texto será exibido na página como pretendido. Deve haver algo de errado com a maneira como estou tentando get_the_meta valor de credit para o credit .


ATUALIZAR

Se eu replace manualmente:

 get_post_meta( $post->ID, 'credit', true ); 

com:

 get_post_meta( 446, 'credit', true ); 

Funciona! Então, tudo o que preciso fazer é descobrir uma maneira de obter o ID do anexo.

Solutions Collecting From Web of "Como posso exibir metadados de imagem?"

Como os dados de crédito são salvos no post meta do anexo , não o post principal:

 $credit = get_post_meta( $post->ID /* Wrong ID! */, 'credit', true ); 

Em vez disso, você precisa pegar o ID da imagem inserida:

 function attach_image_credit( $images ) { $return = $images[0]; // Get the image ID from the unique class added by insert to editor: "wp-image-ID" if ( preg_match( '/wp-image-([0-9]+)/', $return, $match ) ) { if ( $credit = get_post_meta( $match[1] /* Captured image ID */, 'credit', true ) ) $return .= $credit; } return $return; }