1

私は、Wordpress テーマに基づいた既存のサイトでいくつかの作業を行っていますが、約 15 個のプラグイン (Buddypress を含む) を使用しています。特に WP Sliding Login|Dashboard プラグインには、ユーザーのアクティビティ フィードへのリンクがあります。wp-sliding-login-dashboard.php ファイルで、そのリンクを作成するコードを見つけました。

  <?php
                if ( is_user_logged_in() ) {
                global $current_user;
                $username = $current_user->user_login;
                echo ' <li><a href="http://www.mywebsitename.com/members/' . $username . '/activity/">Activity Feed</a></li>';
                    }
                    ?>

このコードを使用してユーザーを同じ場所に送りたいのですが、ホームページの上部にあるリンクを使用します。残念ながら、ホームページのリンクはすべて Wordpress のメニューを使用して作成されており、私が知る限り、既存のページに添付された静的リンクの使用しか許可されていません。

上記のコードを実行するためだけに exit にリンクするダミー ページを作成しますか? それは可能ですか?シェイクスピアを読もうとしている 5 歳の子供を想像してみてください。あなたは私のコーダーとしての能力を知っているので、遠慮なく私に話しかけてください。関数」、よだれを垂らして混乱しているあなたを見つめます。

わかりやすくするための画像: スライディング ログイン メニュー (WP-Sliding Login|Dashboard Plugin)。ステータス バーにターゲット URL を www.ferrignofit.com/members/FerrignoFit/activity/ として表示します (現在ログインしているユーザーは FerrignoFit です): http ://i.imgur.com/NPvmCXU.jpg

上記の URL に行きたいメイン ページの Wordpress ベースのメニューですが、現在は別のページ www.ferrignofit.com/activity/ に移動しています: http://i.imgur.com/dIiFpDC.jpg

4

1 に答える 1

0

したがって、この特定の問題に対するjQueryソリューションは次のとおりです。あなたが持っている画像を見て、あなたがしたいことは、動的な WordPress メニューの特定のアンカーをターゲットにすることです.

ご存知かもしれませんが、WordPress のメニュー機能用のカスタム リンクを作成できます...ラベルと URL を設定するだけです。そのようなアイテムを作成し、今のところ URL のハッシュを与える必要があります。

次に、その特定のメニュー項目にクラスを設定して、それを対象とする jQuery の適切なハンドルを取得できるようにします (それ以外の場合は、WordPress が特定のメニュー項目ごとに作成する動的クラスを使用できます)。

クラス セットがある場合、またはターゲットにする必要があるものがわかっている場合は、このコード ブロックをメニューの前に追加できます。

<?php if (is_user_logged_in()){ ?>
  <script>
    $(document).ready(function(e) {    
      var targetNav = $('li.customClassName a');
      var userName = '<?php $current_user = wp_get_current_user(); echo $current_user->display_name;?>';
      var userUrl = 'http://www.mywebsitename.com/members/'+ userName +'/activity/';
      targetNav.attr('href',userUrl);
    });
  </script>
<?php } else { ?>
  <script>
    $(document).ready(function(e) {    
      var targetNav = $('li.customClassName a');
      targetNav.attr('href','http://www.stackoverflow.com');
    });
  </script>
<?php } ?>

WordPress で現在のユーザー名を取得するために PHP を使用していることに注意してください。ユーザー名を取得し、それをuserName変数に保存して、必要なuserUrlパスを設定します。

別の注意としてis_user_logged_in()、ユーザーが実際にログインしていない場合、リンクを別のものにするオプションがあるように使用しています。したがって、このifステートメントでは、コードの 2 つのブロックのうちの 1 つが PHP によって出力されます。

2 つの変数を設定したらすぐに、メニュー項目を jQuery でターゲットにし、href属性を変更してハッシュをパスと動的ユーザー名に置き換えます。

これはJSとPHPを混在させるのはあまり良い方法ではありませんが、誰かが提案できる他の解決策をここで学びたいので、あなたの非常に具体的な問題の解決策としてこれを投稿しています.

<script>私は自分の WordPress サイトでこのコードをテストしましたが、うまくいきました。このコードは PHP ファイルにある必要があることを覚えておいて.jsください。

于 2013-07-26T02:04:17.470 に答える