WP plugin z naključnim povečevanjem cifre

Pozdravljeni,

Wordpressov plugin directory sem za to zadevo že več ali manj v celoti prebrskal, zato se obračam na forum po pomoč :) Iščem plugin ali kakšno drugo rešitev, ki bi mi cifro med tekstom v članku na vsake nekaj ur (recimo na vsake 8 ur) povečal za naključno cifro med 1 in 10.

Torej, če imamo recimo članek;

"Joža ima 10 jabolk in 20 hrušk" bi plugin vsakih osem ur povečal na način "Joža ima 14 jabolj in 20 hrušk".

Za vse predloge se vam že vnaprej zahvaljujem :)

13 odgovorov

Cifro das v span/div z ID, nato pa z jQuerijem povecujes cifro :)

1

perunpro: hvala za hint! Ker nisem ravno mojster kode bi te prosil za kakšen sample kode, ki to dela, če imaš kje pri roki :)

http://jsfiddle.net/9Jbgz/

Je pa zal pri tem ena velika pomanjkljivost. Zadeva se izvaja samo, ko je uporabnik na strani in še to vidi vsak uporabnik po svoje (glede na to kdaj je prišel na stran). Ob refreshu se nastavi nazaj na privzeto vrednost, ker se ne shranjuje v bazo.

Opcija je tudi, da zadevo rešuješ s PHPjem. V članku označiš število s posebno sintakso - npr. #10#.
Nastaviš cron job, da ti vsake N-časa izvaja skripto. V skritpi pa parsaš vsebino za vse vrednosti ki so znotraj #, jih spremeni in shrani nazaj.

Če poveš kaj točno bi rad dosegel, ti bomo lažje svetovali (:

1

sikmajnd: najlepša hvala za tole, vendar kot si rekel, težava je ravno v tem, da se ne shranjuje v bazo. Kaj praviš na tole: http://stackoverflow.com/questions/2540277/jquery-counter-to-count-up-to-a-target-number

Kaj točno bi rad dosegel? Hum, enostavno, da se številka znotraj texta povečuje za različno cifro med 1 in 5 na vsako recimo minuto in na povečani cifri ostane tudi ob refreshu. Sem že iskal vse možne plugine, pa brez uspeha, programer pa ravno nisem, da bi si to znal spisati sam :)

Brez baze boš težko to naredil. Vrednosti se ne bodo ujemale. A to imaš vrednosti zapisane v posti ali page-ih. Povej kaj več kako imaš trenutno zastavljeno pa mogoče skupaj pridemo do kakšne rešitve.

Trenutno imam preprost page (ne post) znotraj Wordpressa z veliko besedila. V tem besedilu je trimestna cifra, katero bi rad avtomatsko povečeval (vsako povečanje bi bilo za naključno vrednost med 1 in 10, na vsako uro ali dve). Trenutno nimam glede tega nič še zastavljeno, kajti niti nimam pojma kako to izvesti :) Upam, da sem dovolj preprosto tole povedal, ker drugače gre res za simpl stvar za nekega programerja (predvidevam) zame pa cel projekt :D

Računaj vrednost na podlagi datuma in ure. Pa se bo povečevala neglede na obisk.

V bazi v tabeli posts ustvariš novo polje 'postlastincrease' in mu podaš tip 'timestamp'.
Poglej ID od pagea, ki ga želiš urejati. Pri tem IDju nastavi timestamp na trenutni čas.

V administraciji odpri page in okoli števila, ki ga želiš spreminjati dodaj naslednji html: <spand id="st"></span>

Tole zalimas v functions.php:

if ( !function_exists ( "check_and_increase_value" )){
    function check_and_increase_value(){

        global $wpdb;

        $post_id = 2; //nastavimo ID strani, kjer se nahaja številka
        $posts = $wpdb->get_row("SELECT ID, post_content, post_last_increase FROM " . $wpdb->prefix . "posts WHERE ID = " . $post_id);

        $lastTime = strtotime($posts->post_last_increase);
        $casovnaRazlika = time() - $lastTime;

        if($casovnaRazlika > 3600){

                        $regex = '#\<span id="st"\>(.+?)\<\/span\>#s';
                preg_match($regex, $posts->post_content, $matches);
                $match = strip_tags($matches[0]);
            $steviloUr = round($casovnaRazlika / 3600);

            $rand = 0;
            for( $i = 0; $i < $steviloUr; $i++ ){
                $rand += rand(1,10);
                usleep(20000);
            }

            $novaVrednost = $match + $rand;
            $newValueContent = preg_replace($regex, $novaVrednost, $posts->post_content);
            $newLastTime = date('Y-m-d H:i:s', time());
            $wpdb->update( $wpdb->prefix . "posts", array("post_content" => $newValueContent, "post_last_increase" => $newLastTime ), array( "ID" => $post_id ) );
        }   
    }
    add_action( "init", "check_and_increase_value" );
}

ID od pagea popraviš tudi v funkciji - spremenljivka $post_id

Zadeva deluje na tak način, da preveri kdaj je bil zapis nazadnje osvežen (to se zgodi vsakič, ko obiskovalec pride na stran) in če je od zadnje vrednosti preteklo več kot 1 ura, potem spremeni vrednost. V primeru, da nihče ne odpre strani v npr. 8 urah, potem bo skripta sama nadoknadila še za manjkajoče ure.

Preden poženeš naredi backup baze, za katero ne odgovarjam ;) Kodo bi lahko naredil še malce bolj proper in jo optimiziral, samo mislem, da bo zadostovala tvojim potrebam ;)

Tole sem probal na najnovešji verziji WP, čista inštalacija.

3

sikmajnd: resnično najlepša hvala za tole in za trud! Sem poskusil ampak ko odprem to stran ko vse to postorim dobim tale error:

Fatal error: Call to undefined function add_action() in /home/.../wp-includes/functions.php on line 38

V 38 vrstici kode je pa tale vrstica:

addaction( "init", "checkandincreasevalue" );

Si dal to v functions.php v rootu strani? Dat moraš v functions.php, ki se nahaja pod: wp-content/themes/ime-teme/functions.php ;)

1