На страницу 1, 2 След. |
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
Код: |
<?php
set_time_limit(0);
include"wp-config.php";
$year="2008";
$month="2";
$day="12";
$result=mysql_query("Select * from `wp_posts` ORDER BY `ID` ASC");
$z=mysql_numrows($result);
for ($i=0; $i<$z; $i++) {
$n_day=rand(1,5);
$id = mysql_result($result, $i, 'ID');
$post_date = mysql_result($result, $i, 'post_date');
$pos=strpos($post_date," ");
$date=substr($post_date,$pos+1);
if($month==12 && $day>28) { $year=$year+1; $month="1"; $day="1"; }
else {
if($day>28) { $month=$month+1; $day="1"; }
}
if(strlen($day)==1){ $day="0".$day; }
if(strlen($month)==1){ $month="0".$month; }
$dd=$year."-".$month."-".$day." ".$date;
$sql = "UPDATE `wp_posts` SET `post_date`='$dd', `post_date_gmt`='$dd', `post_modified`='$dd', `post_modified_gmt`='$dd' WHERE `ID`='$id'";
$results = mysql_query($sql);
$day=$day+$n_day;
}
?>
|
Вот значит есть скриптик,он меняет даты постов... в начале ставится дата откуда начинается отсчет,собственно как ограничить разброс, а то я ставлю начальную 2008 и у меня в архиве появляется июль 2010,как ограничить нужным мне числом например 19 января 2009(ну что бы разброс был постов в пределе от и до) Помогите! |
|
|
|
|
|
|
![]() brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
я лучше своим поделюсь
Код: |
<?
set_time_limit(0);
$server="";
$login = "";
$passwd = "";
$dbname = "";
$wp_posts = "wp_posts";
// 0, 0, 0, месяц, день, год
$d1 = mktime(0, 0, 0, 1, 1, 2008);
$d2 = mktime(0, 0, 0, 1, 20, 2009);
$link = mysql_connect($server, $login, $passwd);
mysql_select_db($dbname, $link);
$query = "SELECT MIN(ID) as tmp FROM $wp_posts";
$res = mysql_query($query, $link);
$a = mysql_fetch_array($res);
$id1 = $a["tmp"];
$query = "SELECT MAX(ID) as tmp FROM $wp_posts";
$res = mysql_query($query, $link);
$a = mysql_fetch_array($res);
$id2 = $a["tmp"];
$query = "SELECT * FROM $wp_posts";
$res = mysql_query($query, $link);
$dx = floor(($d2-$d1)/($id2-$id1));
while ($a = mysql_fetch_array($res)) {
$id = $a["ID"];
$d = $d1 + ($id-$id1)*$dx;
$d = date("Y-m-d H:i:s", $d);
$query = "UPDATE $wp_posts SET post_date='".$d."', post_date_gmt='".$d."', post_modified='".$d."', post_modified_gmt='".$d."' WHERE ID='".$id."'";
$res1 = mysql_query($query, $link);
}
mysql_close($link);
?>
|
|
|
|
|
|
|
|
![]() Gyrus Свой |
Зарегистрирован: 16.10.2008
Сообщений: 5
|
Обратиться по нику
|
Gyrus |
Ответить с цитатой | | |
|
Это просто надо переписать скриптик... потому что текущая реализация - берет все посты, и расставляет даты, с условием, что 1 пост будет делаться в 1-5 дней. Тоесть, если у тебя вылазит 2010 год, это.. видимо вобщем дохрена постов раскидываешь. вот оно по этим условиям и меняет даты..
Я к чему... Если например, ты решишь выставить конечную дату скажем 20 января 2009, то, не получится ли так, что посты будут идти раз в минуту например?..
Код: |
<?php
set_time_limit(0);
include"wp-config.php";
$year="2008";
$month="2";
$day="12";
$pct=10;
$lyear="2009"
$lmonth="1"
$lday="21"
$result=mysql_query("Select * from `wp_posts` ORDER BY `ID` ASC");
$z=mysql_num_rows($result);
$ldate=strtotime($lyear.'-'.$lmonth.'-'.$lday);
$sdate=strtotime($year.'-'.$month.'-'.$day);
$interval=$ldate-$sdate;
$sec=floor($interval/$z);
$st=floor(($sec/100)*$pct);
for ($i=0; $i<$z; $i++) {
$n_sec=rand($st,$sec);
$sdate+=$n_sec;
$post=mysql_fetch_object($result);
$ndate=date('Y-m-d H:i:s',$sdate);
$sql = "UPDATE `wp_posts` SET `post_date`='$ndate', `post_date_gmt`='$ndate', `post_modified`='$ndate', `post_modified_gmt`='$ndate' WHERE `ID`='".$post->id."'";
$results = mysql_query($sql);
}
?>
|
короче, оно берет количество всех постов из базы (например 100), стартовую дату и конечную дату. от конечной даты отнимает стартовую дату - получает промежуток, в который надо пометить эти 100 постов.
затем, этот промежуток - делится на количество постов. получаем интервал, с которым надо постить эти посты, чтоб уметсить в конечную дату. но, чтобы все посты не шли с одинаковым интервалом - добавляем процент...
тоесть, чтобы уместить все посты до конечной даты - надо постить раз в 100 секунд к примеру. Используя $pct - выставляем процент, и в итоге, все посты будут поститься со случайным интервалом от 90 до 100 секунд. (10% от 100 секунд - будет 10 секунд, 100-10=90 - начальный интервал, конечный интервал=100)..
как-то так.
Не проверял, набросал прямо в форме быстрого ответа.. работать должно. |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
И еще подскажите пожалуйста как вот такую штуку всавить в страницу ,и она работала?
Код: |
<ul>
<?php wp_get_archives('type=monthly&limit=12'); ?>
</ul>
</li>
|
В шаблон вставляю все работает,но отображается на всех страницах,а надо на 1 |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
Gyrus, Parse error: syntax error, unexpected T_VARIABLE in бла бла бла online 12 |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
|
|
|
![]() brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
Что за ошибка? В первых строках не забудь вписать данные подключения к БД |
|
|
|
|
|
|
![]() Hello_Kitty V.I.P. |
Зарегистрирован: 30.04.2007
Сообщений: 10763
|
Обратиться по нику
|
Hello_Kitty |
Ответить с цитатой | | |
|
Napas писал(а): |
И еще подскажите пожалуйста как вот такую штуку всавить в страницу ,и она работала?
Код: |
<ul>
<?php wp_get_archives('type=monthly&limit=12'); ?>
</ul>
</li>
|
В шаблон вставляю все работает,но отображается на всех страницах,а надо на 1
|
используй if:
Код: |
<?php /* If this is the frontpage */ if ( is_home() || is_page() ) { ?>
<ul>
<?php wp_get_archives('type=monthly&limit=12'); ?>
</ul>
|
тогда будет только на главной и в пагах виден архив.
ну и по другим ситуациям аналогично проставляешь. |
|
|
|
|
|
|
![]() ctapbiu Опытный |
Зарегистрирован: 06.01.2008
Сообщений: 328
|
Обратиться по нику
|
ctapbiu |
Ответить с цитатой | | |
|
Napas писал(а): |
И еще подскажите пожалуйста как вот такую штуку всавить в страницу ,и она работала?
В шаблон вставляю все работает,но отображается на всех страницах,а надо на 1
|
Код: |
<?php if (is_home()):?>
<ul>
<?php wp_get_archives('type=monthly&limit=12'); ?>
</ul>
<?php endif;?>
</li>
|
так?
upd: на минуту опоздал .) |
|
|
|
|
|
|
![]() Gyrus Свой |
Зарегистрирован: 16.10.2008
Сообщений: 5
|
Обратиться по нику
|
Gyrus |
Ответить с цитатой | | |
|
Napas писал(а): |
Gyrus, Parse error: syntax error, unexpected T_VARIABLE in бла бла бла online 12
|
Упс.
точки с запятой расставь, в конце этих строк:
$lyear="2009";
$lmonth="1";
$lday="21" ;
вот так, и пробуй..  |
|
|
|
|
|
|
![]() Hello_Kitty V.I.P. |
Зарегистрирован: 30.04.2007
Сообщений: 10763
|
Обратиться по нику
|
Hello_Kitty |
Ответить с цитатой | | |
|
Код: |
<ul>
<?php wp_get_archives('type=monthly&limit=12'); ?>
</ul>
</li>
|
кстати в примере закрывающий тег li есть, а открывающего нет. учти это. |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
Napas |
Ответить с цитатой | | |
|
ctapbiu, Hello_Kitty, Я немного не правильно выразился...я вставляю в page.php и отображается у меня 2 Страницы Архив и Связь с администрацией вот мне надо,что бы это отображалось только в Архив |
|
|
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
|
|
|
![]() Napas Небо не шатко ман! |
Зарегистрирован: 15.07.2008
Сообщений: 859
|
Обратиться по нику
|
|
|
|
|
|
Партнеры
|