Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с php скриптом для wordpress
 
 автор: nobad-news   (26.10.2013 в 15:08)   письмо автору
 
 

В общем мне нужно так чтобы каждый день выбиралась случайная статья и была на сайте весь день, а на следующий день выбиралась другая статья и т.д.
Помогите пожалуйста в этом вопросе !!!

как я понимаю нужно что-то типа этого:
проверить, есть ли кука
Нет -> выбрать случайную статью. -> создать куку с ид статьи
Да -> выбрать статью по ид из куки.
но как это реализовать на php понятия не имею, помогите пожалуйста!!!

P.S. вот мой сайт nobad - news . com (без пробелов), а скрипт хочу применить к случайным записям правее слайдера.

  Ответить  
 
 автор: ZetRider   (27.10.2013 в 17:43)   письмо автору
 
   для: nobad-news   (26.10.2013 в 15:08)
 

Прочитайте про CRON.

[Модератор] Не нужно безосновательно отсылать форумчан к ману, да еще и не разобравшись что ТС конкретно хочет. Хотите помочь - задайте наводящие вопросы или выясните что спрашивающий не договорил.

  Ответить  
 
 автор: nobad-news   (27.10.2013 в 19:31)   письмо автору
 
   для: ZetRider   (27.10.2013 в 17:43)
 

спасибо, посмотрел, но вот все таки хочется что-нибудь попроще или дайте какую-нибудь информацию поточнее, а то в описании про крон все его функции кратко описываются.

  Ответить  
 
 автор: Sfinks   (28.10.2013 в 08:31)   письмо автору
 
   для: nobad-news   (27.10.2013 в 19:31)
 

> как я понимаю нужно что-то типа этого:
> проверить, есть ли кука
> Нет -> выбрать случайную статью. -> создать куку с ид статьи
> Да -> выбрать статью по ид из куки.
> но как это реализовать на php понятия не имею, помогите пожалуйста!!!

Вы хотите одну случайную статью в целом для всего сайта? Если так, то куки тут не при чем.
Или одну случайную статью, для каждого пользователя свою? Тогда логика нормальная.

  Ответить  
 
 автор: ZetRider   (28.10.2013 в 09:24)   письмо автору
 
   для: nobad-news   (27.10.2013 в 19:31)
 

Если делать при помощи куки, то у все пользователей всегда будут отображаться разные записи. Если нужно отображать одну случайную запись одинаково у всех, то записываем ID в бд и отображаем.

Данные из БД заранее закешированы самим WP поэтому запрос вида
$last_update_date = get_option('one_entry_per_day');
не создает дополнительных запросов.

Если без крона, только средствами WP предлагаю два варианта вывода:

1 как виджет (код вставить в файл активной темы functions.php)

<?php
class Sidebar_one_entry_per_day_Widget extends WP_Widget {
    function 
Sidebar_one_entry_per_day_Widget() {    parent::WP_Widget(false$name 'Одна запись каждый день');    }
    function 
widget($args$instance) {
        
extract$args );
        
        
$last_update_date get_option('one_entry_per_day');
        if(
$last_update_date == '' OR $last_update_date date('Y-m-d'))
        {
            
$args = array(
                
'category'             => intval($instance['category']),
                
'orderby'            => 'rand',
                
'post_type'         => 'post',
                
'post_status'         => 'publish',
                
'posts_per_page'     => '1'
            
);
        }
        else
        {
            
$args = array(
                
'p'    => get_option('one_entry_id')
            );
        }
        
        echo 
$before_widget;
        if(
$instance['title'] != '')
        {
            echo 
$before_title;
            echo 
$instance['title'];
            echo 
$after_title;
        
        }
        
$posts get_posts($args);  
        foreach( 
$posts as $post ){
            
setup_postdata($post);  
            
            
$last_update_date get_option('one_entry_per_day');
            if(
$last_update_date == '' OR $last_update_date date('Y-m-d'))
            {
                
update_option('one_entry_per_day'date('Y-m-d'));
                
update_option('one_entry_id'get_the_ID());
            }
?>
        <div class="post">
            <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
            <br>
            <?php the_excerpt(); ?>
        </div>
<?php
        
}
        
wp_reset_postdata();
        echo 
$after_widget;

    }
    function 
update($new_instance$old_instance) {    return $new_instance; }
    function 
form($instance) {
    
$title esc_attr($instance['title']);
    
$category esc_attr($instance['category']);
?>
    <p>
        <label for="<?php echo $this->get_field_id('title'); ?>">Заголовок
        <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title?>" />
        </label>
    </p>
    <p>
        <label for="<?php echo $this->get_field_id('category'); ?>">ID категории
        <input class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>" type="text" value="<?php echo $category?>" />
        </label>
    </p>
<?php
    
}
}
add_action('widgets_init'create_function('''return register_widget("Sidebar_one_entry_per_day_Widget");'));
?>


2 вариант просто вставка кода в шаблон файлов сайта:


<?php
$last_update_date 
get_option('one_entry_per_day');
if(
$last_update_date == '' OR $last_update_date date('Y-m-d'))
{
    
$args = array(
        
'category'             => 123/* ID категории */
        
'orderby'            => 'rand',
        
'post_type'         => 'post',
        
'post_status'         => 'publish',
        
'posts_per_page'     => '1'
        
);
}
else
{
    
$args = array(
        
'p'    => get_option('one_entry_id')
    );
}

$posts get_posts($args);  
foreach( 
$posts as $post ){
    
setup_postdata($post);  
    
    if(
$last_update_date == '' OR $last_update_date date('Y-m-d'))
    {
        
update_option('one_entry_per_day'date('Y-m-d'));
        
update_option('one_entry_id'get_the_ID());
    }
?>
<div class="post">
    <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
    <br>
    <?php the_excerpt(); ?>
</div>
<?php
}
wp_reset_postdata();
?>


p.s. Модератор - ок.

  Ответить  
 
 автор: nobad-news   (28.10.2013 в 19:27)   письмо автору
 
   для: ZetRider   (28.10.2013 в 09:24)
 

спасибо большое за код, теперь наконец то разобрался!!!+++)))

  Ответить  
 
 автор: nobad-news   (28.10.2013 в 19:51)   письмо автору
 
   для: ZetRider   (28.10.2013 в 09:24)
 

К сожалению, тут же сразу появился вопрос.

А как сделать так чтобы эта случайная запись выводилась на главной странице сверху в углу ссылкой (код мне нужно вставить в index.php) и не мешала выводу основных записей (т.е. последних). А то какая-то абра кадабра получается - какая запись выбирается кодом, та на главной и стоит.

Подскажите пожалуйста !!!)))
P.S. надеюсь я понятно оъбяснил)))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования