Cron se nespouští

Vyřešeno1.20K zhlédnutíWebhostingcron
0

Dobrý den,

vytvořil jsem php soubor s názvem topovani.php, který je umístěný v www/domains/sexsexsex.cz/

Můj skript je zcela jednoduchý, resetuje meta field na výchozí hodnotu 0. Když kód vložím do wordpressu function.php, tak se automaticky zapne a funguje jak má. Function.php kód:

<?php
 function reset_reputace() {
    $default_reputace = 0;
     $allposts = get_posts(
        array(
            'post_type'   => 'partner-na-erotiku',
            'numberposts' => -1,
            'meta_key'    => 'reputace', // Změněno na váš meta key
        )
    );
     foreach ($allposts as $eachpost) {
        // Resetujte hodnotu meta fieldu "reputace" na výchozí hodnotu
        update_post_meta($eachpost->ID, 'reputace', $default_reputace);
    }
}
add_action('init', 'reset_reputace');
  ?>

Ve Webhosting – Cron jsem vytvořil Cron, který se spustí v celou hodinu (pro zkoušku, že to bude fungovat. Poté přenastavím na půlnoc). Pokud kliknu na „Ověřit možné spuštění“ tak mi napíše „CRON topovani (http://sexsexsex.cz/topovani.php) je možné spustit“ což je dobré znamení. Ale když zkouším zapnout Cron manuálně, tudíž do prohlížeče zadám URL adresu „http://sexsexsex.cz/topovani.php“ tak mi vypíše následující chybu:

Fatal error: Uncaught Error: Call to undefined function add_action() in /data/web/virtuals/333435/virtual/www/domains/sexsexsex.cz/topovani.php:19 Stack trace: #0 {main} thrown in /data/web/virtuals/333435/virtual/www/domains/sexsexsex.cz/topovani.php on line 19

S Cronem pracuji poprvé. Poradíte mi, co mám změnit aby vše fungovalo jak má?

Předem děkuji za jakoukoli pomoc.

PS. máte nějaký návod, jak Cron zabezpečit, aby nikdo cizí nemohl přes URL zapnout tento skript? Udělalo by to pak velké zmatky.

Role: Zákazník
Otázka je uzamčena pro nové odpovědi.
MB313456 Vybral nejlepší odpověď
0
58.49K Odpověď od WEDOS Internet, a.s. 0 Komentář

Dobrý den,

funkce add_action() je WP funkce, tedy funguje jen pro WP, viz popis funkce. Pokud dáte kód s touto funkcí do samostatného php souboru, nebude fungovat. tedy problém není v cronu, ale v tom, že v PHP voláte funkci, která je jen pro WP.

Role: Podpora
MB313456 Vybral nejlepší odpověď
0

Zdravím, jak to chápu já, voláte samostatný soubor topovani.php, ale nikde nevidím v tom souboru žádné načítání include nebo require potřebných souborů s funkcemi – systém prostě nezná funkci add_action(), není nikde deklarována – Call to undefined function add_action()

Chyba není v Cronu.

Role: Zákazník+ Web: https://socl.cz/slevove-kupony-wedos Vizitka: Zákazníkem od roku 2011... :-)
MZ61249 Odpověděl na otázku
0

OPRAVA: v textu jsem omylem napsal function.php místo topování.php, pardon. Takže tento kód:

<?php
 function reset_reputace() {
    $default_reputace = 0;
     $allposts = get_posts(
        array(
            'post_type'   => 'partner-na-erotiku',
            'numberposts' => -1,
            'meta_key'    => 'reputace', // Změněno na váš meta key
        )
    );
     foreach ($allposts as $eachpost) {
        // Resetujte hodnotu meta fieldu "reputace" na výchozí hodnotu
        update_post_meta($eachpost->ID, 'reputace', $default_reputace);
    }
}
add_action('init', 'reset_reputace');
  ?>

je v topovani.php. Jinak function.php je klasický z wordpressu.

Co mi v mém topovani.php chybí?

Role: Zákazník
MB313456 Změnil status na publikováno
0

S php jsem obeznámen pouze krátce, mým selským rozumem jsem si představil, že vytvořím soubor topovani.php, do souboru vložím potřebnou skript, vložím ji do adresáře www/domains/sexsexsex.cz/, vytvořím cron který tento soubor zapne v určitý čas pro function.php. Ale pokud vložím <? include „topovani.php“; ?> do function.php, tak můj skript bude automaticky fungovat, než-li čekat na Cron. Nebo se mýlím?

Pro mne je toto nová vysoká zeď, kterou když mi pomůžete zdolat, tak díky vám udělám další krůček k pochopení programování. Opět předem děkuji za případné vysvětlení, jak můžu docílit svého záměru)

Role: Zákazník
MB313456 Změnil status na publikováno