Yacc
Реклама
Контекстный баннер
В админке появится новый виджет Context Banner. Тащим его в сайдбар и настраиваем.
Context.
Можно выбрать из: Post title, Post content, Post Categories, Post Tags.
Banners.
Формат: KEYWORD|IMG_SRC|A_HREF
То есть код баннера будет таким: <a href="A_HREF"><img src="IMG_SRC"/></a>
Строки разделяйте точкой с запятой.
Принцип работы простой: если в выбранном контексте будет найдено указанное ключевое слово, то будет показан соответствующий баннер.
Вставлять в конец файла functions.php
Обновлено 8 марта 2011
function get_tag_name ($tag) { return $tag->name; }
class WP_Widget_Context_Banner extends WP_Widget {
function WP_Widget_Context_Banner() {
$widget_ops = array('classname' => 'widget_context_banner',
'description' => 'Shows banners, if the selected context is specified keywords. Use the following format for Banners field: KEYWORD|IMG_SRC|A_HREF. Separate lines with a semicolon.');
$this->WP_Widget('context-banner', 'Context Banner', $widget_ops);
}
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
//$banners = apply_filters( 'yacc_context_banner', $instance['banners'], $instance );
$context = empty( $instance['context'] ) ? 'post_title' : $instance['context'];
$ads = empty( $instance['ads'] ) ? array() : $instance['ads'];
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="textwidget"><?php
if(is_singular()){
global $post;
if( $post ){
foreach( array_keys($ads) as $keyword ) {
if($keyword) {
if( ( $context == 'post_title' && ( stripos( get_the_title(), $keyword ) !== false ) )
|| ( $context == 'post_content' && ( stripos( strip_tags( get_the_content() ), $keyword ) !== false ) )
|| ( $context == 'post_categories' && in_array( $keyword, array_map( "get_cat_name", wp_get_post_categories( get_the_id() ) ) ) )
|| ( $context == 'post_tags' && in_array( $keyword, array_map( "get_tag_name", wp_get_post_tags( get_the_id() ) ) ) )
) {
echo $ads[$keyword];
}
}
}
}
} ?>
</div>
<?php
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
if ( current_user_can('unfiltered_html') ){
$instance['banners'] = $new_instance['banners'];
}
if ( in_array( $new_instance['context'], array( 'post_title', 'post_content', 'post_categories', 'post_tags' ) ) ) {
$instance['context'] = $new_instance['context'];
} else {
$instance['context'] = 'post_title';
}
$lines = explode(';', $instance['banners']);
$ads = array();
foreach ($lines as $line) {
$raw = explode('|', $line);
$keyword = trim($raw[0]);
$ads[$keyword] = '<a href="'.trim($raw[2]).'"/><img src="'.trim($raw[1]).'"/></a>';
}
$instance['ads'] = $ads;
return $instance;
}
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'banners' => '', 'context' => 'post_title' ) );
$title = strip_tags($instance['title']);
$banners = format_to_edit($instance['banners']); ?>
<p>
<span style="color:red;"><?php echo $this->id; ?></span>
</p>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><strong><abbr title="Widget title.">Title</abbr></strong></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('context'); ?>"><strong><abbr title="Where to search KEYWORD.">Context</abbr> </strong></label>
<select class="widefat" name="<?php echo $this->get_field_name('context'); ?>" id="<?php echo $this->get_field_id('context'); ?>">
<option value="post_title"<?php selected( $instance['context'], 'post_title' ); ?>>Post title</option>
<option value="post_content"<?php selected( $instance['context'], 'post_content' ); ?>>Post content</option>
<option value="post_categories"<?php selected( $instance['context'], 'post_categories' ); ?>>Post categories</option>
<option value="post_tags"<?php selected( $instance['context'], 'post_tags' ); ?>>Post tags</option>
</select>
</p>
<p style="clear: both;">
<label for="<?php echo $this->get_field_id('banners'); ?>"><strong><abbr title="KEYWORD|IMG_SRC|A_HREF;">Banners</abbr></strong></label>
<textarea class="widefat" rows="10" cols="20" id="<?php echo $this->get_field_id('banners'); ?>" name="<?php echo $this->get_field_name('banners'); ?>"><?php echo $banners; ?></textarea>
</p><?php
}
}
add_action('widgets_init', create_function('', 'return register_widget("WP_Widget_Context_Banner");'));
Последний раз редактировалось: Yacc (08/03/11 в 07:15), всего редактировалось 4 раз(а)