Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Wordpress How To
цитата
15/02/11 в 18:42
 FXIX
pingwin писал:
поделюсь фенечкой:

поделюсь тоже фенечкой - такие темы надо хуками мутить в functions.php чтобы после апдейта не потерять.
цитата
16/02/11 в 01:55
 Crappyday
все, я потерялся, лучше буду юзать готовые плагины.
монстры блоговодства smail54.gif
цитата
16/02/11 в 23:49
 ibiz
как выводить релейтед рендомные посты, без завязки на теги, но постоянные для каждой отдельной страницы?
например для страницы page?id=1 всегда выводить посты page?id=5 page?id=7 page?id=128
для page?id=2 другие посты page?id=123 page?id=345 page?id=5678
тоесть рендомные посты, постоянны для каждой страницы
вот такой такой вопросик smail101.gif
цитата
17/02/11 в 08:00
 Yacc
ibiz писал:
... тоесть рендомные посты, постоянны для каждой страницы

Так рандомные или постоянные? icon_smile.gif
Непонятно.
цитата
17/02/11 в 09:22
 ibiz
Yacc писал:
Так рандомные или постоянные? icon_smile.gif
Непонятно.


постоянные, но разные для каждой отдельно взятой страницы, понятно? icon_smile.gif
цитата
17/02/11 в 13:03
 Yacc
Related posts на основе ID постов.

То же самое, но ссылки на посты будут вида example.com/?p=128
Вставлять внутрь цикла в single.php
<?php
   $post_id = get_the_id();
   $related_posts = get_post_meta($post_id, 'Related post ids', true);
   if(count($related_posts) > 0) {
      $ids = explode(',', $related_posts);
      if (count($ids) > 0) { ?>
         <div class="related">
            Related posts
         <ul><?php
               foreach ( $ids as $id ) {
                  $post = get_post($id); ?>
                  <li>
                     <a href="<?php echo $post->guid; ?>">
                        <?php echo $post->post_title; ?>
                     </a>
                  </li><?php
               } ?>
         <ul>
         </div> <?php
      }
   }
   wp_reset_query();
?>
цитата
17/02/11 в 13:36
 ibiz
Yacc писал:
Related posts на основе ID постов.
То же самое, но ссылки на посты будут вида example.com/?p=128
Вставлять внутрь цикла в single.php
<?php
   $post_id = get_the_id();
   $related_posts = get_post_meta($post_id, 'Related post ids', true);
   if(count($related_posts) > 0) {
      $ids = explode(',', $related_posts);
      if (count($ids) > 0) { ?>
         <div class="related">
            Related posts
         <ul><?php
               foreach ( $ids as $id ) {
                  $post = get_post($id); ?>
                  <li>
                     <a href="<?php echo $post->guid; ?>">
                        <?php echo $post->post_title; ?>
                     </a>
                  </li><?php
               } ?>
         <ul>
         </div> <?php
      }
   }
   wp_reset_query();
?>


вставил,
после Related posts почему-то выводится текущий пост только без чпу .../?p=11 и все, всего постов на сайте 20 штук, что я делаю не так?
цитата
17/02/11 в 13:50
 Yacc
Custom field с именем Related post ids сделал?
id постов через запятую вставил?
Посты с такими id есть?

За чпу иди по ссылке из предыдущего сообщения.
цитата
17/02/11 в 13:52
 ibiz
Yacc писал:
Custom field с именем Related post ids сделал?
id постов через запятую вставил?
Посты с такими id есть?
За чпу иди по ссылке из предыдущего сообщения.


ааа блин туплю, тогда все работает smail54.gif
цитата
17/02/11 в 18:47
 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 раз(а)
цитата
26/02/11 в 10:04
 ibiz
как прилепить произвольный текст в конец страниц с помощью плагина без изменений в теме?
цитата
26/02/11 в 11:18
 Yacc
В конец какой страницы? Или в конец поста? И что за плагин?

Короче уточни. icon_smile.gif
цитата
26/02/11 в 11:25
 ibiz
Yacc писал:
В конец какой страницы? Или в конец поста? И что за плагин?
Короче уточни. icon_smile.gif


в конец всех страниц, типа плагин аля гугл аналитикс на сайт icon_smile.gif
цитата
26/02/11 в 11:27
 Yacc
Ну, открой файл шаблона footer.php и вставь туда что хочешь.
Оно? icon_smile.gif
цитата
26/02/11 в 11:46
 ibiz
Yacc писал:
Ну, открой файл шаблона footer.php и вставь туда что хочешь.
Оно? icon_smile.gif


неа, нужен плагин, без изменения темы icon_smile.gif
цитата
26/02/11 в 11:57
 Yacc
Тебе сюда плагин написать или ты интересуешься как в принципе это сделать? icon_smile.gif
цитата
26/02/11 в 12:01
 ibiz
я интересуюсь, но и от готового плагина не откажусь icon_smile.gif
цитата
26/02/11 в 12:39
 Yacc
Сохранить в файл wp-content/plugins/foo/foo.php

Код:
<?php

/*
Plugin Name: foo
*/

function foo() {
   echo 'Hello, world!';
}

add_action( 'wp_footer', 'foo' );

?>


Потом иди в админку и активируй плагин foo. icon_smile.gif
цитата
26/02/11 в 13:22
 ibiz
спасибо огромное, то что нужно! smail54.gif
цитата
01/03/11 в 08:49
 Semen_ssr
Раз такая пьянка, Yacc, как перемешать посты в ленте?
1. Один раз для всего блога.
2. При каждой загрузке страницы.
3. Прилепить к плагину Popularity Contest по убыванию.
icon_smile.gif
цитата
01/03/11 в 13:32
 Yacc
Насколько я понял тебе нужны посты в случайном порядке. Для эого нужно внести одно изменение в цикл (выделено красным).
Код:
<?php
   $args = array(
     'orderby' => 'rand',
     'post_type' => 'post',
     'post_status' => 'publish',
     'posts_per_page' => 10,
     'ignore_sticky_posts' => 1 // Только для WP 3.1
   );
   $rand_query = new WP_Query($args);
   if( $rand_query->have_posts() ) {
      while ($rand_query->have_posts()) {
         $rand_query->the_post();
         the_title();
         the_content();
      }
   }
   wp_reset_query();
?>


Что и куда "прилепить" по убыванию не понял. Уточни. icon_smile.gif
цитата
01/03/11 в 13:41
 Semen_ssr
Это был вариант 2, тоже спасибо я даже темы сейчас редко ковыряю не то что бы делать или код рыть, вариант раз - это их просто перетусовать один раз как колоду карт и так и оставить на всю жизнь. А вариант три - это есть такой плагин популярности статей, вот чтобы он выводил саму ленту по популярности icon_smile.gif
цитата
01/03/11 в 14:06
 Yacc
Что значит перетусовать один раз? icon_smile.gif
Посты хранятся в базе. В ленте посты отображаются в том порядке, в каком они выбраны из базы экземпляром WP_Query. По умолчанию посты выбираются в порядке убывания дат.
Получается, что для того чтобы "перетусовать один раз" надо пройтись по всем постам и сменить даты на случайные. Тебе это надо? icon_smile.gif
Думаю что нет. Остаётся только модификация основного цикла или установка соответствующего плагина.

Popularity Contest вываливается с fatal error на этапе активации - сразу в топку, даже разбираться не хочу. icon_smile.gif
цитата
02/03/11 в 04:23
 Semen_ssr
Yacc писал:
Получается, что для того чтобы "перетусовать один раз" надо пройтись по всем постам и сменить даты на случайные. Тебе это надо? icon_smile.gif
Думаю что нет.

Именно это в принципе icon_smile.gif

Вот такой вопрос, при открытии страницы какой либо категории видем в тайтле название категории, некоторые темы выводят именно описание категории, лопатил - лопатил, где эта гребанная строчка ? icon_smile.gif

upd.
Стоит формат : %category_title% | %blog_title% , а описание это что?
Надо типа: %description_category% | %blog_title% но так не пашет :-)
цитата
02/03/11 в 11:54
 Yacc
Semen_ssr писал:
Именно это в принципе icon_smile.gif

Сам разберёшься что к чему или подсказать? icon_smile.gif
Код:
UPDATE wp_posts
SET post_date = FROM_UNIXTIME(RAND() * (UNIX_TIMESTAMP('2010-12-31') - UNIX_TIMESTAMP('2009-01-01')) + UNIX_TIMESTAMP('2009-01-01'))
WHERE post_type = 'post' AND post_status = 'publish'


Semen_ssr писал:
Вот такой вопрос, при открытии страницы какой либо категории видем в тайтле название категории, некоторые темы выводят именно описание категории, лопатил - лопатил, где эта гребанная строчка ? icon_smile.gif

СЕ-оптимальные TITLE, DESCRIPTION и ROBOTS
Стр. « первая   <  1, 2, 3, 4, 5  >  последняя »


Эта страница в полной версии