Jump to content

Novice php question


cjboston

Recommended Posts

I am using a script that imports images using an array of calls to check for various ifs. the call to the script is <?php import_my_pic( array('default_image' => 'actual default image url', 'default_size' => 'thumbnail', 'width' => '60', 'height' => '60' ) ); ?>

I have it working fine but I want to call the default image from a folder so the older pages don't all have the same image,i have php script that does that

<?php import_my_pic( array('default_image' => ' include('random.php')', 'default_size' => 'thumbnail', 'width' => '60', 'height' => '60' ) ); ?>

can this be done?

Link to comment
Share on other sites

if you use the code tags around your php or even html snippets, you will likely get more help

[ code ]Like this but without the spaces in the tags[ /code ]

would be

Like this but without the spaces in the tags

 

anyways, you can't call a php function w/in the array. As is, as far as php is concerned 'include("random.php")' is a string. You could use eval, but that is very insecure. So what I suggest is use a if statement inside the function put_image_here() that looks to see if the 'default_image' is == "RANDOM" and if so include random.php else use the image URL specified.

Link to comment
Share on other sites

here is the code can you elaborate?

<?php

function put_image_here( $args = array() ) {

$defaults = array(
	'custom_key' => array( 'Thumbnail', 'thumbnail' ),
	'post_id' => false, // Build functionality in later
	'attachment' => true,
	'default_size' => 'thumbnail',
	'default_image' => true,
               'order_of_image' => 1,
	'link_to_post' => true,
	'image_class' => false,
	'image_scan' => true,
	'width' => true,
	'height' => true,
	'format' => 'img',
	'echo' => true
);

$args = apply_filters( 'put_image_here_args', $args );

$args = wp_parse_args( $args, $defaults );

extract( $args );

if ( !is_array( $custom_key ) ) :
	$custom_key = str_replace( ' ', '', $custom_key) ;
	$custom_key = str_replace( array( '+' ), ',', $custom_key );
	$custom_key = explode( ',', $custom_key );
	$args['custom_key'] = $custom_key;
endif;

if ( $custom_key && $custom_key !== 'false' && $custom_key !== '0' )
	$image = image_by_custom_field( $args );

if ( !$image && $attachment && $attachment !== 'false' && $attachment !== '0' )
	$image = image_by_attachment( $args );

if ( !$image && $image_scan )
	$image = image_by_scan( $args );

if (!$image && $default_image )
	$image = image_by_default( $args );

if ( $image )
	$image = display_the_image( $args, $image );

else
	$image = '<!-- No images were added to this post. -->';

if ( $echo && $echo !== 'false' && $echo !== '0' && $format !== 'array' )
	echo $image;
else
	return $image;
}

/**
* Calls images by custom field key
* Script loops through multiple custom field keys
* If that particular key is found, $image is set and the loop breaks
* If an image is found, it is returned
*
* @since 0.3
* @param array $args
* @return array|bool
*/
function image_by_custom_field( $args = array() ) {

extract( $args );

if( !$post_id )
	global $post;

if( isset( $custom_key ) ) :
	foreach ( $custom_key as $custom ) :
		$image = get_post_meta( $post->ID, $custom, true );
		if ( $image ) :
			break;
		endif;
	endforeach;
	if ( !$image ) :
		return false;
	endif;
endif;

return array( 'image' => $image );
}

/**
* Check for attachment images
* Uses get_children() to check if the post has images attached
* If image attachments are found, loop through each
* The loop only breaks once $order_of_image is reached
*
* @since 0.3
* @param array $args
* @return array|bool
*/
function image_by_attachment( $args = array() ) {

extract( $args );

if ( !$post_id )
	global $post;

/*
* Get attachments
*/
$attachments = get_children( array( 'post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) );

if ( empty( $attachments ) )
	return false;

foreach ( $attachments as $id => $attachment ) :
	$i++;
	if ( $i == $order_of_image ) :
		$image = wp_get_attachment_image_src( $id, $default_size );
		$image = $image[0];
		break;
	endif;
endforeach;

return array( 'image' => $image );
}

/**
* Scans the post for images within the content
* Not called by default with put_image_here()
* Shouldn't use if using large images within posts, better to use the other options
*
* @since 0.3
* @param array $args
* @return array|bool
*/
function image_by_scan( $args = array() ) {

if ( !$post_id )
	global $post;

preg_match_all( '|<img.*?src=[\'"](.*?)[\'"].*?>|i', $post->post_content, $matches );

if ( isset( $matches ) ) $image = $matches[1][0];

if ( $matches[1][0] )
	return array( 'image' => $image );
else
	return false;
}

/**
* Used for setting a default image
* Not used with put_image_here() by default
*
* @param array $args
* @return array
*/
function image_by_default( $args = array() ) {

extract( $args );

$image = $default_image;

return array( 'image' => $image );
}

/**
* Formats an image with appropriate alt text and class
* Adds a link to the post if argument is set
* Should only be called if there is an image to display, but will handle it if not
*
* @since 0.1
* @param array $args
* @param array $arr Array of image info ($image, $classes, $alt, $caption)
* @return string $image Formatted image (w/link to post if the option is set)
*/
function display_the_image( $args = array(), $arr = false ) {
global $post;

extract( $arr );

if ( !$image )
	return;

extract( $args );

if ( $width )
	$width = ' width="' . $width . '"';
if ( $height )
	$height = ' height="' . $height . '"';

$img = $image;

if ( is_array( $custom_key ) ) :
	foreach ( $custom_key as $key ) :
		if ( $key !== 'false' && $key !== '0' ) :
			$classes[] = str_replace( ' ', '-', strtolower( $key ) );
		endif;
	endforeach;
endif;

$classes[] = $default_size;
$classes[] = $image_class;

$class = join( ' ', $classes );

$image = '';

if ( $format == 'array' ) :
	$image = array(
		'url' => $img,
		'alt' => the_title_attribute( 'echo=0' ),
		'class' => $class,
		'link' => get_permalink( $post->ID ),
	);
	return $image;
endif;

if ( $link_to_post )
	$image .= '<a href="' . get_permalink( $post->ID ) . '" title="' . the_title_attribute( 'echo=0' ) . '">';

$image .= '<img src="' . $img . '" alt="' . the_title_attribute( 'echo=0' ) . '" class="' . $class . '"' . $width . $height . ' />';

if ( $link_to_post )
	$image .= '</a>';

return $image;
}

/**
* Use put_image_here() instead
*
* @since 0.1
* @deprecated 0.3
*/
function put_image_here_link( $deprecated = '', $deprecated_2 = '', $deprecated_3 = '' ) {
put_image_here();
}

?>[.code]

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.