Benutzer einschränken, um nur benutzerdefinierte Taxonomien anzuzeigen, die sie eingegeben haben?

Ich war in der Lage, Benutzer zu beschränken, um nur ihre eigenen Beiträge zu sehen, sowohl im Frontend als auch im Admin-Bereich. Jetzt möchte ich sie darauf beschränken, nur die von ihnen eingegebenen Taxonomiedaten zu sehen.

Mein Beispiel: Ich habe eine benutzerdefinierte Taxonomie namens Partner erstellt. Ich möchte, dass jeder Benutzer seine Partner hinzufügen kann, damit sie einem Beitrag zugeordnet werden können. Ich möchte die Partner eines Benutzers nur für den Benutzer verfügbar halten, der sie erstellt hat.

Ist das sinnvoll? Hat jemand eine Möglichkeit, dies zu implementieren?

Vielen Dank!

Solutions Collecting From Web of "Benutzer einschränken, um nur benutzerdefinierte Taxonomien anzuzeigen, die sie eingegeben haben?"

Das kann gemacht werden, aber bevor ich meine Vorgehensweise erkläre, seien Sie gewarnt, dass dies nichts für schwache Nerven ist. Ich werde Ihnen den Code für die Lösung hier nicht geben, aber ich werde darlegen, wie dies theoretisch erreicht werden kann.

Taxonomiebegriff mit Benutzer verknüpfen

Das erste Problem, das Sie damit lösen müssen, besteht darin, eine Möglichkeit zu finden, Taxonomiebegriffe mit Benutzern zu verknüpfen. WordPress tut dies standardmäßig nicht. WordPress zeichnet Autoreninformationen auf, die Posts aller Arten zugeordnet sind, aber ähnliche Daten werden nicht für Taxonomiebegriffe aufgezeichnet. Um zu beginnen, müssen Sie eine Methode zum Hinzufügen von Metadaten zu Ihren Begriffen entwickeln. Ich habe kürzlich einen Artikel über das Hinzufügen von Metadaten zu Taxonomiebegriffen geschrieben. Was Sie tun müssen, ist die Benutzer-ID als Metadaten zu den Begriffen hinzuzufügen, wenn der Begriff gespeichert wird . Dies würde bedeuten, die Metadaten zu erfassen und sie in den Bildschirmen zum Erstellen und Bearbeiten von Taxonomie-Begriffen zu speichern, sowie im Hauptpost-Schreibbildschirm, auf dem Benutzer neue Begriffe erstellen können. Die zwei wichtigsten Haken, die Sie dafür benötigen, sind:

  • erstellt _ {$ Taxonomie}
  • editiert _ {$ Taxonomie}

Diese Hooks werden als Teil der function wp_update_term und wp_update_term sich hervorragend zum Hinzufügen eines Begriffsmetas, um die ID des aktuellen Autors dem Begriff wp_update_term . Wenn dies abgeschlossen ist, würden Sie Ihre Begriffe mit Ihren Autoren verknüpfen.

Filtern von Begriffen nach Autor

Nun, da die Autoren den Begriffen zugeordnet sind, müssen Sie diese Begriffe bei der Anzeige filtern. Mit anderen Worten, Sie müssen feststellen, wann diese Begriffe im Admin angezeigt werden, und sie so filtern, dass nur die Begriffe des Autors angezeigt werden. Ich denke, die zwei wichtigsten Bereiche für diese Filterung wären im Taxonomie-Bildschirm und den Post-Screens (es gibt vielleicht andere Orte, um diese Begriffe zu filtern, aber das sind die einzigen, die mir gerade in den Sinn kommen). Ihr Ansatz dazu kann ein wenig variieren, aber in erster Linie werden Sie nach Möglichkeiten suchen, wie Sie mit add_filter die in diesen Szenarien angezeigten Begriffe beeinflussen können. Für die Anzeige des Schreibbildschirms können Sie Folgendes verwenden:

  • get_terms
  • wp_dropdown_cats

um mit Aufgaben zu helfen. Diese sind relativ einfach zu verwenden. Grundsätzlich besteht die Strategie darin, eine function zu schreiben, die jeden Ausdruck durchläuft, den zugehörigen Autor identifiziert und ihn entfernt, wenn er nicht mit dem Autor assoziiert ist. Ich schrieb einen Artikel über die Verwendung von get_terms , um Taxonomiebegriffe nach einer benutzerdefinierten Reihenfolge zu sortieren . Wenn Sie sich den Artikel ansehen, können Sie sich ein Bild davon machen, wie Sie den Filter get_terms .

Der get_terms Filter wäre auch nützlich, um die Begriffe auf der Taxonomieseite herauszufiltern. Sie müssen jedoch darauf achten, dass Sie den Filter nicht missbrauchen. Sie sollten den Filter beispielsweise nur dann anwenden, wenn ein Benutzer gerade angemeldet ist, der Benutzer ein Autor ist und der Benutzer sich im Admin befindet. Daher haben Sie keinen Einfluss auf die Ausgabe für Nutzer, die Ihre Website anzeigen. Sei sehr vorsichtig damit.

Hoffentlich wird dies Sie in die richtige Richtung weisen. Das ist eigentlich eine ziemlich coole Idee und wenn ich etwas Zeit habe, entwickle ich vielleicht ein Plugin dafür.

Beeindruckend! Tolle Antwort. Vielen Dank. Ich bekomme das Konzept sicher. Ich werde Ihre Artikel lesen und wahrscheinlich noch mehr damit zusammenhängende Forschung betreiben. Ich kann existierendes PHP optimieren und sogar ein (sehr) kleines schreiben, so dass dies über meine Fähigkeitsniveaus hinausgehen kann, aber ich bin unten für das Versuchen.

Wenn Sie jemals ein Plugin zusammen bekommen, lassen Sie es mich wissen. Ich denke, ich bin nicht der Einzige, der davon Gebrauch machen könnte.