Warning: array_keys() expects parameter 1 to be array, string given in
/home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php
on line 34Warning: Invalid argument supplied for foreach() in
/home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php
on line 40
function bfa_image_size() {
$meta = wp_get_attachment_metadata();
echo $meta['width']. '×' . $meta['height'];
}
function bfa_image_meta( $args = '' ) {
$defaults = array(
'keys' => '',
'before' => '',
'after' => '',
'item_before' => '',
'item_after' => '',
'item_sep' => ' · ',
'key_before' => '',
'key_after' => ': ',
'value_before' => '',
'value_after' => '',
'display_empty' => FALSE
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$meta = wp_get_attachment_metadata();
$string_array = array();
// All keys, alphabetically sorted, as provided by wp_get_attachment_metadata()
if( $keys == '' ) {
$array_keys = array_keys( $meta['image_meta'] ); ---***line34***
// Only keys specificed in parameter:
} else {
$array_keys = array_map( 'trim', explode( ',', $keys ) );
}
foreach( $array_keys as $key ) { --***line 40***
$value = $meta['image_meta'][$key];
if( $display_empty === TRUE || ( $value != '' && $value != '0' ) ) {
if( $key == 'created_timestamp' )
// Transform timestamp into readable date, based on default WP date/time settings:
$value = date( get_option('date_format') . ' - ' . get_option('time_format'), $value );
// Prettify key
$key = ucwords( str_replace( '_', ' ', $key ) );
$key = $key == 'Iso' ? 'ISO' : $key;
$key = str_replace(
array(
'Aperture',
'Credit',
'Camera',
'Caption',
'Created Timestamp',
'Copyright',
'Focal Length',
'ISO',
'Shutter Speed',
'Title'
),
array(
__( 'Aperture', 'montezuma' ),
__( 'Credit', 'montezuma' ),
__( 'Camera', 'montezuma' ),
__( 'Caption', 'montezuma' ),
__( 'Timestamp', 'montezuma' ),
__( 'Copyright', 'montezuma' ),
__( 'Focal Length', 'montezuma' ),
__( 'ISO', 'montezuma' ),
__( 'Shutter Speed', 'montezuma' ),
__( 'Title', 'montezuma' )
),
$key
);
I have the above code. What could be cause of the warnings that are appearing?
Try this (you can see this warning because $array_keys have type as string or something alse) if stetmen:
The warning explains it all.
array_keys() expects parameter 1 to be array, string given
is telling you that a string was passed toarray_keys()
instead of an array.Thus,
$meta['image_meta']
is probably not an array.As a result,
$array_keys
is not being set as an array, leading to your next warning, when you try to applyforeach
to it.