0

私はここで髪を引っ張っています、私は単にこれを機能させることができません。

Webサイトのすべての著者を取得するには、foreachループを実行する必要があります。次に、公開された記事が0の著者をフィルターで除外し、記事のある著者を特別なULLIにエコーする必要があります。

  • 配列の最後の作成者のタグ:

    現在の私のコードには2つの関数があります。1つは少なくとも1つの記事を持つすべての作成者を事前フィルタリングし、2つ目の関数では、フィルタリングされた配列に残っている作成者の数をカウントして、配列の最後のエントリに特別なliタグを付けます。これまでのコード:

    /*********************
        Echo Filtered List
        *********************/
        function filtered_list() {
            $authors = get_users('orderby=nicename');
            $all_authors = array();
             if ( count_user_posts( $author->id ) >= 1 ) {
                 return true;
            }
    
        }
    
    
        function contributors() {
    
        $i = 0;
        filtered_list();
        $len = count($all_authors);
        foreach ($all_authors as $author ) {
              if ( count_user_posts( $author->id ) >= 1 ) {
                    if ($i == $len - 1) {
                        echo "<li class='author-last clearfix'>";}
                    else {
                        echo "<li class='author clearfix'>";}
                    $i++;
    
  • 4

    1 に答える 1

    1

    コードを読めば、なぜそれが機能しないのかがわかります。

    最初: スコープ

    PHP マニュアルの変数スコープについて読んでください。基本的に、関数内で宣言された変数はその関数内でのみ使用できるため、$all_authors初期化されていないため、 contributors() 内では null です。

    このfiltered_list関数はフィルタリングされた著者のリストを返す必要があるため、ループして著者をif に$authors追加する必要があります。$all_authorsループの後、配列を返します。

    これで、fist 関数の戻り値を $all_authors に設定することで、フィルター処理されたリストを取得できますcontributors(または、さらに良いのは、それらを呼び出すだけ$authorsです)。

    これで、作成者のリストを反復処理して投稿を見つける準備が整いました。これを行うには、2 つのループが必要です。1 つは著者用、もう 1 つは投稿用です。

    foreach author in authors
        foreach post in author->posts
            if post is last post
                print special stuff
            else
                print normal stuff
            endif
        endforeach
    endforeach
    

    これが役に立ち、そこから何かを学べることを願っています。要点: コードを 1 行ずつ読み、それが何をするのかを自分自身に説明します。

    于 2013-01-29T11:55:21.240 に答える