Wie kann ein Benutzer seinen Beitrag (eine Anzeige) als Entwurf erstellen und dann erneut veröffentlichen, ohne eine Genehmigung zu benötigen?

Ich benutze WordPress als eine Verzeichnisseite, wo ein Benutzer einen Beitrag einreichen kann, der seine Anzeige / Auflistung wird. Den Benutzern wird eine benutzerdefinierte WordPress-Rolle zugewiesen.

Beiträge müssen einmal vom Administrator genehmigt und veröffentlicht werden, und dann können sie ihren Beitrag nach Belieben frei aktualisieren. Im Moment funktioniert das gut, weil ich der benutzerdefinierten Rolle keine Veröffentlichungsfunktionen gegeben habe.

Ich brauche aber auch die Möglichkeit für den Benutzer, seinen Post offline (Entwurf vielleicht) temporär zu nehmen, wann immer sie wollen, und ihn jederzeit wieder veröffentlichen zu lassen. Wenn sie ihren Beitrag zum “Entwurf” machen, müssen sie ihn zur Überprüfung einreichen, damit er wieder veröffentlicht wird – das ist nicht ideal.

Gibt es einen Weg um dies zu ändern, damit sie ihren Beitrag von published zu draft ändern können und dann wieder von draft zu published , ohne dass es genehmigt werden muss?

Oder vielleicht gebe ich ihnen Veröffentlichungsfähigkeiten, um damit anzufangen, aber es gibt ein Plugin, das erfordert, dass ihr erster Beitrag genehmigt wird? (sie sind sowieso nur 1 Post erlaubt).

Was ist mit einer benutzerdefinierten Metabox mit einem Kontrollkästchen, das steuert, ob der Beitrag veröffentlicht wird? Leider hätte ich keine Ahnung, wo ich mit dieser Art von functionalität anfangen sollte. Ich verwende WPALchemy für andere Metaboxen.

Solutions Collecting From Web of "Wie kann ein Benutzer seinen Beitrag (eine Anzeige) als Entwurf erstellen und dann erneut veröffentlichen, ohne eine Genehmigung zu benötigen?"

Ich habe mich kürzlich mit genau demselben Problem beschäftigt. Ich habe es nicht getriggers, und wir entschieden, dass, da Leute eine relativ große Summe für ihre Auflistungen zahlen mussten, sie genug incented sein würden, um schlechtes Zeug nicht zu veröffentlichen. Außerdem wäre es schmerzhaft, jeden einzelnen manuell zu genehmigen – die Leute mögen es nicht, einen Tag auf Ergebnisse zu warten.

Also haben wir unserem Benutzerverzeichnis edit_published_posts von Anfang an die functionen publish_posts und edit_published_posts . Sie müssen den Zahlungsprozess durchlaufen, bevor der Post veröffentlicht wird; Sobald sie bezahlt haben, können sie mit ihrem Post alles machen, was sie wollen.

Aber ich hatte einen Geistesblitz (selten), der deine Frage betrachtet. Ich denke, wo ich falsch gelaufen bin, habe nur eine directory_member Ebene, anstatt directory_member und directory_member_approved . Letzteres hätte die Fähigkeit edit_published_posts ; Ersteres nicht. Es wäre relativ einfach, den Benutzer hochzustoßen, wenn ein Administrator den Beitrag zum ersten Mal veröffentlicht.

Die andere Möglichkeit besteht darin, die function edit_published_posts im edit_published_posts basierend auf einem Benutzer-Meta-Feld, in admin_init oder irgendwo, admin_init . Aber irgendwie vermute ich, dass die Idee, zwei explizite Ebenen zu haben, besser ist.

Lass mich wissen, was du tust.

Dank Chris ‘Vorschlag, eine Fähigkeit spontan zu vergeben, konnte ich etwas erreichen, was einem anderen helfen könnte. Es mag eine bessere Methode geben, aber diese funktioniert gut für meine Situation.

Da ich mit einem benutzerdefinierten Post-Typ von listing publish_listings , musste publish_listings dem Benutzer die zugeordnete function publish_listings zuweisen, aber erst, nachdem sie genehmigt wurden. Der beste Weg, dies zu tun, war, eine “admin only” -Metabox in die benutzerdefinierten Post-Screens aufzunehmen, die nur Administratoren sehen konnten. Dies wurde mit Hilfe von WPAlchemy und seinem output_filter .

Mit einer Metabox, die nur ein Administrator sehen konnte, fügte ich ein einfaches Kontrollkästchen hinzu. Wenn diese publish_listings ist und der Post aktualisiert wird, fügt sie dem Autor des aktuellen publish_listings function publish_listings hinzu. Da es sich um eine Art Verzeichnisseite handelt, erlaube ich in meinem Fall nur 1 Beitrag pro Autor, also funktioniert das ziemlich gut. Wenn diese Option deaktiviert und aktualisiert ist, wird die function entfernt. Also würde der Anwendungsfall so aussehen:

  1. Der Benutzer sendet den Post zur Genehmigung
  2. Admin rezensiert Post, aktiviert das Kontrollkästchen und veröffentlicht den Post zum ersten Mal
  3. Dem Benutzer steht es nun frei, seinen Beitrag nach Belieben zu aktualisieren, einen Entwurf zu erstellen und ihn erneut zu veröffentlichen.

Wie ich bereits erwähnt habe, benutze ich WPAlchemy für das schwere Heben von Metaboxen, also war ich in der Lage, save_filter zu verwenden, um die Fähigkeit hinzuzufügen, wenn der Beitrag aktualisiert wird.

 function save_admin_only( $meta, $post_id ) { global $post; //get the author ID of the post we're on $author_id = $post->post_author; $id = get_the_author_meta( 'ID' , $author_id ); $user = new WP_User( $id ); //retrieves the user, based on their ID specified above for user with WP_User class if($meta['_can_publish'] == 'yes') { $user->add_cap( 'publish_listings' ); //assign capability to this user if checkbox is ticked } else { $user->remove_cap( 'publish_listings' ); } //otherwise remove the capability so they can not publish return $meta; } 

Wenn Sie nach einem benutzerdefinierten Beitragstyp suchen müssen (sagen Sie, dass Sie mehr als einen hatten), können Sie ihn wie folgt umbrechen:

 if ( 'other_post_type' == get_post_type() ) { ... } 

Dies könnte für andere Szenarien, in denen Sie keine komplett neue Rolle erstellen möchten, sehr hilfreich sein, nur um einem Benutzer einige functionen zu geben. Wenn jemand das Obige verbessern kann, dann bitte.