私のメインの WP ナビゲーションバーには、WordPress のリサーチャーにのみ表示したい「リサーチ」というメニュー項目があります。
研究者は、wpum_relationship_to_lib
というユーザー メタデータ フィールドによって定義されます。これは、研究者、学生、従業員などのオプションを含む複数選択フィールドです。
researcher
はユーザーがこのメニューにアクセスするために選択するオプションの 1 つである必要があり、wpum_relationship_to_lib
は WordPress ロールを定義しないことが重要です。
すべてのメニューはメインメニューです。また、ログインするまでメニューを非表示にする必要があります。メニューを正しく制限していない私のコードを参照してください。
ああああ
提供されたコードはほとんど正しいです。ただし、ユーザー関係値をチェックする際の条件文に小さな問題があります。コードを更新して、wpum_relationship_to_lib メタ フィールドの関係値の 1 つとして「researcher」を選択したユーザーにのみ「Research」メニュー項目が表示されるようにしました。また、ログインしていないユーザーに対しては [リサーチ] メニューも非表示になります。コードをテストしていないので、コメントは大歓迎です。 #joshmoto のコードは有効ですが、foreach ループ内の条件 !in_array($menu_object->title, $relationship_array) は、メニュー オブジェクトのタイトルがリレーションシップ配列内にないかどうかをチェックします。質問から理解できることによると、値「researcher」がリレーショナル配列にあるかどうかを確認したいということです。したがって、条件を in_array('researcher', $relationship_array) に更新する必要があります。
リーリー答えが出ました。興味深いのは、大文字と小文字が区別されることです。次のコードを使用するだけです。ただし、テスト プラットフォームでは、このコード行がなくても動作します。これが小文字の場合があるとは知りませんでした:
(is_array($relationship_values) && in_array('researcher', array_map('strto lower', $relationship_values))) { ...
皆さん、ご協力、お時間をいただきありがとうございました。 –