Wordpressで自分用にテーマを作成しています。
記事を二列に表示したいのですが、うまくいきません。
以下の通り偶数番の記事と奇数番号の記事で分け、CSSでfloatなどで調整したのですが
うまく並びませんでした。。
このコードの改善方法、あるいはより良い方法などありましたら
ぜひ教えてください。
CSSも載せます。
/* 記事 */
div#odd, div#even {
border: solid 1px #C71585;
padding:15px;
margin-bottom: 20px;
background-color: #C71585;
color: #ffffff;
width: 515px;
float: left;
}
div#odd h2, div#even h2{
background-color: #C71585;
font-size:0.875em;
padding:10px;
margin: 0;
border: solid 1px #ffffff;
}
/* background-image: url(titlebar.png); タイトルバーに写真を入れる */
div#odd h2 a, div#even h2 a {
text-decoration: none;
color: #ffffff;
}
div#even p,div#odd p {
font-size: 0.875em;
line-height: 1.6;
margin-top: 10px;
}
p.postinfo {
color: #FFFFFF;
text-align:right;
margin: 20px 0 0;
clear: both;
}
p.postinfo a {
color: #FFFFFF;
}
p.postinfo a:hover {
color: #000000;
}
p.readmore {
color: #000000;
text-align: left;
}
--------追記--------
>「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」
・何をしたときに
記事を二列に分けるために、is_odd_post()とis_even_post()を使って偶数番の記事と奇数番号の記事で分け、CSSでfloatなどで調整した
・どうなると思って
偶数記事 | 奇数記事
偶数記事 | 奇数記事
と表示される
・どうなったのか
偶数記事 |
偶数記事 | 奇数記事
と表示された
<?php get_header(); ?>
<head>
<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/style.css"> <!-- CSS Stylesheet -->
</head>
<!-- コンテンツ -->
<!-- odd number -->
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if (is_odd_post()): ?>
<div id="odd">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php else: ?>
<div id="even">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php endif; ?>
<?php endwhile; endif; ?>
<!-- end of odd number -->
<!-- even number -->
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if (is_even_post()): ?>
<div id="even">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php else: ?>
<div id="odd">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php endif; ?>
<?php endwhile; endif; ?>
<!-- end of even number -->
<!--- End of コンテンツ --->
<!-- サイドバー -->
<div id="sidebar">
<ul>
<?php dynamic_sidebar(); ?>
</ul>
</div>
<?php get_footer(); ?>
</html>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
- まず、同じIDを持った要素は2つ以上作らないでください。作るならclassにしてください。
- is_odd_postやis_even_postはfunctions.phpで定義してますか?定義してないなら定義してください。
- メインループを巻き戻さないと、2回目以降のループは回りません。なので、rewind_posts関数を呼び出さないとうまくいきません。
- あと、floatはフロートレイヤーにするだけなので、きちんと面倒をみないといけないでしょう。
is_odd_postやis_even_postをfunctions.phpで定義した上で考えると、だいたいこんな感じになると思います。
<div class="clearfix">
<?php
if(have_posts()) {
?><div id="odd"><?php
while(have_posts()) {
the_post();
if(is_odd_post()) {
// 奇数投稿時の出力
}
}
?></div><?php
rewind_posts();
?><div id="even"><?php
while(have_posts()) {
the_post();
if(is_even_post()) {
// 偶数投稿時の出力
}
}
?></div><?php
}
?></div>
なお、clearfixのCSSはこんな感じになります。
.clearfix {
clear: both;
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
以下の通りでできました!協力してくださった2名様、どうもありがどうございました!
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if (is_odd_post()): ?>
<div id="odd">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php else: ?>
<div id="even">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="readmore">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>"/>
<?php echo the_break_excerpt() ?>
</p>
<p class="postinfo" >
<?php echo get_the_date(); ?>
<a href="<?php comments_link(); ?>">コメント<?php comments_number('(0)','(1)','(%)'); ?></a>
</p>
</div>
<?php endif; ?>
<?php endwhile; endif; ?>
<!-- end of odd number -->
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2016/05/30 00:10
「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」をお書きください。また、出力したいHTMLの構造も追記願えますか?
kei344
2016/05/30 02:14
「出力したいHTMLの構造」はPHPのソースではなく、それを実行して出力されたHTMLのことなのですが、追記可能ですか?また、「どうなったのか」の奇数記事は2つ出るはずが1つ減ったということでしょうか。
sumomomo
2016/05/30 04:40
HTMLの構造を載せようと前のをもう一度試したら、なぜかしっかり動きました!!協力してくださり、本当にありがとうございます。