フォーラムへの返信

13件の返信を表示中 - 16 - 28件目 (全28件中)
  • >スタイルシートでインデントやマージン設定をしても効かないのです。
    >なぜでしょうか?

    私のテスト環境ではちゃんと効いているのですが、pocopocoさんがお使いのテンプレートではcssの優先順位が負けてる可能性がありますね…@@;

    まず、私の書いた以下のCSSをstyle.cssの一番下(←重要!)に記述されましたでしょうか?

    ul.category .cat-item { /*親カテゴリーの名前(非リンク)*/
    	color:#66FF00;
    }
    ul.category .cat-item a{ /*親カテゴリーの名前(リンク)*/
    	color:#0000FF;
    }
    ul.category .children .cat-item a{ /*子カテゴリーの名前(リンク)*/
    	color:#FF9933;
    }

    それでもcssが効かない場合は、上記のcss指定よりも優先度の高い指定がある為、そちらが有効になっていて、上記のcssが無効になっているのかと思います。

    上記のcssをstyle.cssに追記して文字色は変わったが、インデントやマージンが効かないという場合は、直前の要素のfloatが解除されていない可能性があります。

    これはテンプレートの作りやcssを見てみないと分からないので、今私が具体的に、解決に至るcssを書く事は出来ませんが、以下の2つの方法を試して見てください。

    ①私の書いたテンプレート側のコード1行目、
    <ul class="category">

    <ul id="category">
    に変更し、style.cssの一番最後に以下を記述
    (前回書いたものは削除してください)

    ul#category .cat-item { /*親カテゴリーの名前(非リンク)*/
    	color:#66FF00;
    }
    ul#category .cat-item a{ /*親カテゴリーの名前(リンク)*/
    	color:#0000FF;
    }
    ul#category .children .cat-item a{ /*子カテゴリーの名前(リンク)*/
    	color:#FF9933;
    }

    ②(文字色が変わっていてマージン等が効かない場合)
    私の書いたテンプレート側のコード1行目、
    <ul class="category">
    の一行上に、
    <div class="clearfix"></div>
    と記述してください。これはフロートを解除する為です。

    上記の2つを行っても改善されない場合は、間違いなくcssの優先度が弱くcssが効いていないか、セレクタの指定が間違っていますので、スペルが間違っていないかや、クラスとidを間違えていないか等を確認してください。

    ul#categoryより上位のセレクタから記述してあげれば、恐らく改善するのではないかと思います。

    cssの優先順位については、以下のサイトに分かりやすく記載されていましたので、参考にしてみてくださいね。
    http://www.stylish-style.com/csstec/base/order.html

    <dl>から<ul>に変更したコードをアップしますね。
    (吐き出したhtmlのマークアップが一部おかしかったのでその部分も修正しました;)

    単純に<ul><dl>を変えれば良いのでしょうか?

    入れ替えるコードは以下の部分です。

    <ul>
    <?php wp_list_categories('orderby=name&show_count=1&hide_empty=0&exclude=,2&title_li='); ?>
    </ul>

    以下のコードにごっそり入れ替えます。

    <ul class="category">
    <?php $categories = get_categories( 'parent=0&hide_empty=0' );
    $childrenFlg = false;
    foreach($categories as $category):
    $catName = $category->name;
    $catID = $category->cat_ID;
    $catUrl = get_category_link($catID);
    
    if(get_category_children($catID)){ //子カテゴリーの有無をチェック
    	$childrenFlg = true;
    }else{
    	$childrenFlg = false;
    }
    
    if($childrenFlg == false){ //子カテゴリーが無い場合は親カテゴリーページにリンク
    echo '<li class="cat-item"><a href="'.$catUrl.'">'.$catName.'</a></li>';
    echo wp_list_categories("child_of={$catID}&title_li&show_option_none=");
    }else{ //子カテゴリーがある場合は親カテゴリーにリンクを張らず、子カテゴリーをリスト表示
    echo '<li class="cat-item">'.$catName.'</li>';
    echo wp_list_categories("child_of={$catID}&title_li");
    }
    endforeach;
    ?>
    </ul>

    以下のCSSで見た目を整えます(プロパティには仮の文字色が入ってます)

    ul.category .cat-item { /*親カテゴリーの名前(非リンク)*/
    	color:#66FF00;
    }
    ul.category .cat-item a{ /*親カテゴリーの名前(リンク)*/
    	color:#0000FF;
    }
    ul.category .children .cat-item a{ /*子カテゴリーの名前(リンク)*/
    	color:#FF9933;
    }

    親カテゴリーB、Cにも子カテゴリーがあるものとして考えておりました;

    子カテゴリーが存在する場合は子カテゴリーにリンクを張り、子カテゴリーが無い場合は、親カテゴリーに、自身のカテゴリーページにリンクを張るように修正してみました。

    <dl>
    <?php $categories = get_categories( 'parent=0&hide_empty=0' );
    $childrenFlg = false;
    foreach($categories as $category):
    $catName = $category->name;
    $catID = $category->cat_ID;
    $catUrl = get_category_link($catID);
    
    if(get_category_children($catID)){ //子カテゴリーの有無をチェック
    	$childrenFlg = true;
    }else{
    	$childrenFlg = false;
    }
    
    if($childrenFlg == false){ //子カテゴリーが無い場合は親カテゴリーページにリンク
    echo '<dt><a href="'.$catUrl.'">'.$catName.'</a></dt>';
    echo '<dd>'.wp_list_categories("child_of={$catID}&title_li&show_option_none=").'</dd>';
    }else{ //子カテゴリーがある場合は親カテゴリーにリンクを張らず、子カテゴリーをリスト表示
    echo '<dt>'.$catName.'</dt>';
    echo '<dd>'.wp_list_categories("child_of={$catID}&title_li").'</dd>';
    }
    endforeach;
    ?>
    </dl>

    また、「不要な親カテゴリーはget_categoriesのパラメータにexcludeでidを指定してあげてください。 」というのは、このメニュー一覧に掲載したくないカテゴリーを指定して除外するので、リンクを張らなくなるのではなく、リストから消えてしまいます。

    例えば、

    日本料理(親カテゴリー)
     ┗デザート
     ┗主食
     ┗おかず

    フランス料理(親カテゴリー)
     ┗デザート
     ┗主食
     ┗おかず

    中華料理(親カテゴリー)
     ┗デザート
     ┗主食
     ┗おかず

    私のブログ(親カテゴリー)
     ┗仕事
     ┗趣味
     ┗恋愛

    といった感じで、最上位のカテゴリー構成がされている場合「私のブログ」は他のお料理コンテンツと一緒に掲載するのは変な感じがしますよね。
    こういう時はget_categoriesのパラメータexcludeに「私のブログ」カテゴリーのidを指定してあげると除外する事ができます。
    「私のブログ」のカテゴリーIDが7だとして具体的に書くと、上記コードの2行目、
    <?php $categories = get_categories( ‘parent=0&hide_empty=0’ );
    を、
    <?php $categories = get_categories( ‘parent=0&hide_empty=0&exclude=7’ );
    というように&exclude=7を追加します。

    初めまして、先日似たような処理をしたので参考になれば幸いです。

    親カテゴリー
    ┗子カテゴリー1
    ┗子カテゴリー2
    ┗子カテゴリー3

    という構造で、子カテゴリーのみリンクが張られていればよいのですよね?

    もし親カテゴリーの数が少ないのであれば、親カテゴリーは普通にhtmlで書いてしまい、
    その下に親カテゴリーにぶら下がる子カテゴリーのみリスト表示するようにするのはどうでしょうか。

    <dl>
    <dt>親カテゴリー</dt>
    <dd><?php wp_list_categories(child_of=「親カテゴリーID」&title_li&お好みの条件); ?></dd>
    </dl>

    こんな感じでどうでしょう。

    ちょくちょく親カテゴリーが増減する場合や、親カテゴリーがたくさんある場合は、親カテゴリー名を自動で取得する仕組みがないとメンテナンスが面倒なので、まず最上位のカテゴリー名とIDを取得し、foreachで回して各親にぶら下がる子カテゴリーを表示するというのはどうでしょうか。

    <dl>
    <?php $categories = get_categories( 'parent=0&hide_empty=0' );
    foreach($categories as $category):
    $catName = $category->name;
    $catID = $category->cat_ID;
    echo '<dt>'.$catName.'</dt>';
    echo '<dd>'.wp_list_categories("child_of={$catID}&title_li").'</dd>';
    endforeach;
    ?>
    </dl>

    不要な親カテゴリーはget_categoriesのパラメータにexcludeでidを指定してあげてください。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    get_term_children() でのやり方は分かりませんでしたが、とりあえず希望する出力結果を得る事が出来ました。

    $objCategory = get_categories(array(‘parent’=>1,‘taxonomy’ => ‘fieldinfo’,’hide_empty’=>false));
    $arrayCategory = stdclass_to_array($objCategory);

    カスタム分類の場合は、パラメーターに’taxonomy’ => ‘カスタム分類名’を入れなくてはいけなかったのですね。。
    2行目で前回と同様に、SC SUGAR CLIP様のfunction stdclass_to_array()を利用して連想配列に変換しております。

    解決済みとさせて頂きます、有難う御座いました。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    popup様

    返信ありがとうございます!
    無事カスタム投稿毎のコメントを取得でき、解決致しました。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    書き忘れてしまいました。
    WPのバージョンは3.4.2です。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    したがって、最終更新が古いものは、現在のルールでレビューを受けていないために、引用URLにあるような画像などを含まないものもあるだろうと思います。

    公式ディレクトリ内の配布テーマでも、やはり利用する際に都度確認した方がいいみたいですね。
    大変勉強になりました、有難う御座いました。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    h1965様

    お世話になっております。
    変更したファイルを元に戻した所、正常に動作するようになりました。

    admin-header.phpで間違って関係無い部分をいじってしまったのが原因のようです。
    アドバイス頂きまして有難う御座いました。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    すみません、書き忘れてしまいました。。
    バージョンはWP3.1です。

    管理画面>設定>プライバシーポリシーの中に、

    【サイトの表示状態】
    ◎サイトの表示状態 サイトを検索エンジン (Google、Bing、Technorati など) やアーカイブも含め、だれにでも読めるようにする
    ◎検索エンジンはブロックするが通常の訪問者の閲覧は許可する

    という2つのラジオボタンの選択肢のみがあります。
    宜しくお願い致します。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    私の場合は上記コードを
    $objCategory = get_categories(array(‘parent’=>1, ‘hide_empty’=>false))
    とし、無事動作致しました。

    ue様、SC SUGAR CLIP様有難う御座いました。

    トピック投稿者 xxxpudding

    (@xxxpudding)

    ue様

    ご回答ありがとうございます。
    お教え頂いたもので、希望どおりの動作になりました!

    ただ、お教え頂いたものの出力結果は、stdClassオブジェクトというものらしく、
    そのまま配列として扱う事が出来なかったので、配列に変換する処理が必要でした。

    超php初心者の私は「なんなんだこれは!@@;」としてしまいましたが、
    同じ初心者の方向けに、解決方法を記録しておきます。

    【stdClassオブジェクトを連想配列に変換する – SC SUGAR CLIP様】
    http://sugar-clip.jp/1857.html

    一部抜粋

    次のような関数を用意しておくと便利です。
    function stdclass_to_array($objDATA) {

    $arrayDATA = (array) $objDATA;
    $arrayKeys = array_keys($arrayDATA);
    $intCount = count($arrayKeys);

    for($i=0;$i<$intCount;$i++){

    $arrayDATA[$arrayKeys[$i]] = (array) $arrayDATA[$arrayKeys[$i]];

    }

    return $arrayDATA;

    }

    さっそく上記関数を使ってみます。
    $objCategory = get_categories();
    $arrayCategory = stdclass_to_array($objCategory);
    print_r($arrayCategory);

    フォーラム: 使い方全般
    返信が含まれるトピック: 管理画面の設計に悩んでおります
    トピック投稿者 xxxpudding

    (@xxxpudding)

    jim912様

    ご返信有難う御座います。
    カスタム分類でのグルーピングでいけそうですね!ありがとうございます!

    商品順序の入れ替えは、管理者がPCスキルが0に近い方なので、ドラッグ&ドロップで実現できるプラグインを導入しようと思います。
    (ここらへんは事前にテストしてみたら上手く動作しなかったので、またフォーラムでお世話になるかもしれません;)

13件の返信を表示中 - 16 - 28件目 (全28件中)