2017-03-29 2 views
1

Ich habe ein gemeinsames Konto, können wir es "Marketing" nennen. Jetzt habe ich drei Leute mit diesem Konto namens Anna, Ben und Max.Wordpress Wert aus Eingabefeld als Kommentar Autor für angemeldete Benutzer setzen

Wenn sich jemand in diesem Konto anmeldet und einen Kommentar mit seinem Namen eingeben möchte, wird immer der Name "marketing" als Autor angezeigt. Wie kann ich das ändern, so dass ich einen Namen in mein Eingabefeld gebe und ich den Wert von diesem als mein Kommentarautor bekomme. In meinem comments.php prüfe ich nicht, wenn der Benutzer angemeldet ist und es hier nennen:

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="2"/> 

Ich habe versucht, folgende in meinem functions.php zu machen:

function change_author($commentdata) { 
    if ($commentdata['user_ID'] == 2) { // User ID for Marketing 

    $commentdata['user_ID'] = 0; 
    $commentdata['comment_author'] = ''; 

    } 

    return $commentdata; 
} 
add_filter('preprocess_comment' , 'change_author'); 

In diesem Fall meine comment_author wird immer Anonym sein und auch wenn ich es auf NULL setze.

Wenn ich gebe den Variablen einen Wert $commentdata['comment_author'] = 'test'; I „Test“, wie mein comment_author bekommen, aber wie gesagt, würde Ich mag den Wert, den ich in meinem Eingabefeld gesetzt haben. Es funktioniert für nicht eingeloggte Benutzer sehr gut, also dachte ich, es könnte auch einen Trick für eingeloggte Benutzer geben.

In phpMyAdmin habe ich nach den Einträgen in der Datenbank gesucht und es gibt mir die richtigen Werte für ID usw. Aber es leert auch das Feld comment_author, was zu einem anonymen Autor führt.

Ich hoffe wirklich, dass jemand mir den richtigen Hinweis geben kann, um diese Aufgabe zu erfüllen.

+1

Ich denke nicht, dass WP dafür ausgelegt ist. Warum legen Sie nicht einfach eine neue Benutzerrolle namens "Marketing" mit den gleichen Rechten fest und erstellen dann 3 Benutzer mit dieser Rolle? – Kujey

+0

Wenn ich genau das machen wollte, hätte ich das getan. Nein, es ist wie ein Intranet, aber ich habe nur ein Beispiel gegeben. Ich will nur diesen einen Benutzer für alle. Ich weiß, es ist keine Best Practice, aber wäre das Beste für mein Szenario. – JudgeFudge

Antwort

0

Gottverdammt, ich wusste nicht, dass das so einfach war.

function change_author($commentdata) { 

    if ($commentdata['user_ID'] == 2) { 

    $commentdata['user_ID'] = 0; 
    $commentdata['comment_author'] = $_POST['author']; 
    $commentdata['comment_author_email'] = ''; 
    $commentdata['comment_author_url'] = ''; 

    } 

    return $commentdata; 
} 
add_filter('preprocess_comment' , 'change_author'); 

Ich denke, das statt == 2 mit != 0 auch funktionieren würde. Diese ist nur eine Lösung für mein eigenes Thema, aber ich denke, es ist auch mit

$commentdata['comment_author_email'] = $_POST['mail']; 
$commentdata['comment_author_url'] = $_POST['url']; 

Hinweis funktionieren würde: der Wert in $ _POST [] ist entweder der Name oder die ID aus dem Eingabefeld. Habe nicht alles getestet, weil Name und ID in meinem Theme denselben Wert haben.

Getestet es ein paar Mal lokal und es hat sehr gut funktioniert!

0

https://wordpress.org/plugins/allow-multiple-accounts/ Dieses Plugin könnte Ihnen helfen, Sie können mehrere Konten unter einem Konto haben.

+0

Ich habe dieses Plugin bereits installiert. Leider habe ich es für ein anderes Problem benutzt und es löst meine Frage, die ich jetzt habe, nicht. Ich möchte nicht mehrere Accounts, sondern nur einen, bei dem ich einen beliebigen Namen für Kommentare angeben kann. Und die Frage ist: Ist es möglich, den Wert von meinem Feld zu bekommen und es innerhalb der Funktion auszulesen? Oder nicht? – JudgeFudge

+0

Sie können benutzerdefinierte Feld in diesem Fall verwenden, versuchen, erweiterte benutzerdefinierte Feld-Plugin ODER Sie können mit benutzerdefinierten WordPress-Feld gehen – RahulN

+0

Ich glaube wirklich, dass Sie meine Frage nicht verstanden haben. Aber egal, ich habe schon eine Lösung veröffentlicht. Fühlen Sie sich frei, es zu benutzen und zu verstehen. – JudgeFudge

Verwandte Themen