Функция Передача массива в определенный ключ
Я создал одну функцию, чтобы получить миниатюру сообщения и вернуть изображение назад.
<?php
function png_thumb($class=null,$thumbsize=null,$no_thumb,$imgclass=null,$extras=null,$hover_content=null){
$title_attr = array(
'title' => get_the_title(),
'alt' => get_the_title(),
'class' => $imgclass
); ?>
<div class="<?php echo $class ?>">
<a href="<?php the_permalink(); ?>" title="<?php //the_title(); ?>">
<?php if ( has_post_thumbnail() ) {
the_post_thumbnail($thumbsize, $title_attr);
} else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/<?php echo $no_thumb ?>" alt="<?php the_title(); ?>" class="<?php echo $imgclass; ?>" <?php echo $extras; ?> />
<?php } ?>
</a>
<?php if($hover_content != "") { ?>
<a href="<?php the_permalink(); ?>"><div class="hovereffect"><?php echo $hover_content; ?></div></a>
<?php } ?>
</div>
<?php } ?>
Но я считаю, что проходной массив будет лучше, чем этот. Но я не знаю, как я могу создать такую функцию, которая может пройти с предопределенным ключом. То же самое, что $title_attr назначенный массив (). Или как работает wordpress $args.
2 ответа
Решение
Вы также можете попробовать это
function png_thumb($args=array()) {
$default= array('class' => null, 'thumbsize' => null, 'no_thumb' => null, 'imgclass' => null, 'extras' => null, 'hover_content' => null);
$settings=array_merge($default,$args);
extract($settings); // now you can use variables directly as $class, $thumbsize etc, i.e
echo $class; // available as variable instead of $settings['class']
echo $thumbsize; // available as variable instead of $settings['thumbsize']
...
}
"Передача массива с предопределенными ключами" не является концепцией, которую понимает PHP. Вы можете просто сделать это, хотя:
function png_thumb(array $args = array()) {
$args += array('class' => null, 'thumbsize' => null, 'no_thumb' => null, 'imgclass' => null, 'extras' => null, 'hover_content' => null);
echo $args['class'];
...
Эта функция принимает массив и заполняет все ключи, которые не были переданы значениями по умолчанию. Вы используете это как:
png_thumb(array('thumbsize' => 42, ...));