it-swarm.com.de

Maximale Anzahl von Beiträgen, die ein Benutzer pro Minute machen kann?

Also fand ich die Lösung, um die Anzahl der Beiträge zu begrenzen, die ein Benutzer pro Tag, aber nicht pro Minute machen kann.

Hier ist ein Auszug aus dem Code, den ich auf http://wordpress.org/support/topic/limit-the-number-of-posts-a-user-can-make?replies= gefunden habe 18

    //limit the quantity to N posts
    $N = 20; max 20 posts por usuario
    $count_posts = count(get_posts(array('author'=>$user_ID)));// returns the quantity of written posts by current user to $user_ID
    if ($count_posts >= N){
    Header("Location: index.php");//redirects to dashboard, where it should point the user that he cannot create a new post
    }
    //end of modification

Wie kann ich die Variable $ count_posts so ändern, dass sie die Zeit zählt? Ich möchte es so machen, dass Benutzer nur einen Beitrag alle 2 Minuten senden können. Wenn sie einen Beitrag auf dem Server einreichen, müssen sie noch 2 Minuten warten, bevor sie einen weiteren Beitrag einreichen.

2
user1114968

Ich würde damit beginnen, den freundlichsten Ansatz dafür zu finden. Ich denke, es wäre eine Warnung, wenn nach dem Veröffentlichen/Aktualisieren auf die Schaltfläche geklickt wird. Es ist möglich, das Laden des Bildschirms "Beitrag bearbeiten" zu verhindern, wenn der Benutzer ihn innerhalb von 2 Minuten nach Veröffentlichung des vorherigen Beitrags erneut aufruft. Ich halte das jedoch nicht für praktisch und verstehe nicht, warum die Umleitung stattfinden muss. Wie wäre es, wenn Sie nicht zulassen, dass die Veröffentlichung abgeschlossen wird, sondern dass Benutzer Entwürfe erstellen können?

Führen Sie die Überprüfung während des Publizierens durch. Wenn Sie nicht wie bereits erwähnt angegriffen werden, werden nur sehr wenige Benutzer jemals eine Warnung sehen ...

add_action( "publish_post", 'limit_post_frequency' );

function limit_post_frequency(){
    /* here you could store the time() in user meta, if no existing value found.
       If the time() meta value already exists, check if it is 120 seconds in the past.
       If 120 seconds in the past, update the user meta value with time()
       Else
       Do a WP notice letting user know they need to wait, you could calculate how
       long they have to wait.
    */
}

Wenn ich meinen Ansatz verwende. Ich würde erwägen, ein Array im Benutzer-Meta-Wert zu speichern und eine Anzahl von Versuchen einzuschließen. Wenn der Benutzer versucht, zu oft zu übermitteln, kann dies als Sicherheitsproblem angesehen und automatisch behoben werden.

UPDATE: Ich möchte einen Hinweis zur Sicherheit hinzufügen. Wenn die Einschränkungen für Spammer gelten, können sie mit meinem Ansatz viele Entwürfe erstellen. Möglicherweise gibt es eine Lösung zum automatischen Löschen von Entwürfen. Es wäre einfach genug, E-Mail-Erinnerungen an Autoren zu senden, um sie zu warnen, dass ein Entwurf bald abläuft, und ihnen möglicherweise sogar eine Kopie ihres Beitrags per E-Mail zuzusenden, während sie ihn löschen.

Denken Sie auch daran, dass Posts geplant werden können. Ihre Autoren könnten also Entwürfe erstellen, nachdem sie ihr Tageslimit von beispielsweise 20 erreicht haben, aber Entwürfe erstellen, die geplant und automatisch veröffentlicht werden. Ich denke, es würde mir Spaß machen, ein Plugin zu erstellen, das dies erledigt. Deshalb habe ich es meiner To-Do-Liste hinzugefügt.

2
Ryan Bayne