メニューを特定のユーザーに制限する: 特定のフィールドの値に基づいてフィルタリングする方法
P粉563831052
P粉563831052 2023-09-07 15:58:31
0
2
428

私のメインの WP ナビゲーションバーには、WordPress のリサーチャーにのみ表示したい「リサーチ」というメニュー項目があります。

研究者は、wpum_relationship_to_libというユーザー メタデータ フィールドによって定義されます。これは、研究者、学生、従業員などのオプションを含む複数選択フィールドです。

researcherはユーザーがこのメニューにアクセスするために選択するオプションの 1 つである必要があり、wpum_relationship_to_libは WordPress ロールを定義しないことが重要です。

すべてのメニューはメインメニューです。また、ログインするまでメニューを非表示にする必要があります。メニューを正しく制限していない私のコードを参照してください。

ああああ

P粉563831052
P粉563831052

全員に返信 (2)
P粉578680675

提供されたコードはほとんど正しいです。ただし、ユーザー関係値をチェックする際の条件文に小さな問題があります。コードを更新して、wpum_relationship_to_lib メタ フィールドの関係値の 1 つとして「researcher」を選択したユーザーにのみ「Research」メニュー項目が表示されるようにしました。また、ログインしていないユーザーに対しては [リサーチ] メニューも非表示になります。コードをテストしていないので、コメントは大歓迎です。 #joshmoto のコードは有効ですが、foreach ループ内の条件 !in_array($menu_object->title, $relationship_array) は、メニュー オブジェクトのタイトルがリレーションシップ配列内にないかどうかをチェックします。質問から理解できることによると、値「researcher」がリレーショナル配列にあるかどうかを確認したいということです。したがって、条件を in_array('researcher', $relationship_array) に更新する必要があります。

リーリー
いいねを押す+0
    P粉799885311

    答えが出ました。興味深いのは、大文字と小文字が区別されることです。次のコードを使用するだけです。ただし、テスト プラットフォームでは、このコード行がなくても動作します。これが小文字の場合があるとは知りませんでした:

    (is_array($relationship_values) && in_array('researcher', array_map('strto lower', $relationship_values))) { ...

    皆さん、ご協力、お時間をいただきありがとうございました。 –

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!