• 使用しているテーマだと、4つの最新ポートフォリオがフロントページに自動で横に4つ並ぶようになっているのですが、
    このうち「右2つを固定、左2つを最新のものが逐一入れ替わる」という形にすることは可能でしょうか?
    不可能であれば、4つのポートフォリオを固定しにしてしまいたいのですが、どこをいじればいいでしょうか。

    該当部分のコードです↓

    <!-- Recent Portfolio Items -->
        <?php
        //get post type ==> portfolio
            global $post;
            $args = array(
                'post_type' =>'portfolio',
                'numberposts' => '4'
            );
            $portfolio_posts = get_posts($args);
        ?>
        <?php if($portfolio_posts) { ?>
            <section id="home-projects" class="clearfix">
                <h2 class="heading"><span><?php if(!empty($options['recent_work_text'])) { echo $options['recent_work_text']; } else { _e('Recent Work','adapt'); }?></span></h2>
    
                <?php
                $count=0;
                foreach($portfolio_posts as $post) : setup_postdata($post);
                $count++;
                //get portfolio thumbnail
                $feat_img = wp_get_attachment_image_src(get_post_thumbnail_id(), 'grid-thumb');
                ?>
    
                <?php if ($feat_img) {  ?>
                <div class="portfolio-item <?php if($count == '4') { echo 'remove-margin'; } if($count == '3') { echo ' responsive-clear'; } ?>">
                    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php echo $feat_img[0]; ?>" height="<?php echo $feat_img[2]; ?>" width="<?php echo $feat_img[1]; ?>" alt="<?php echo the_title(); ?>" />
                    <div class="portfolio-overlay"><h3><?php echo the_title(); ?></h3></div><!-- portfolio-overlay -->
                    </a>
                </div>
                <!-- /portfolio-item -->

    自力での解決ができませんでしたので、ご教授をいただければと思います。
    よろしくお願いします。
    作成中のサイトです

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは。
    ざっとコードを見ただけのアドバイスになりますが。

    4つの最新ポートフォリオがフロントページに自動で横に4つ並ぶようになっているのですが、

    このうち「4つの最新ポートフォリオ」を取得している部分が、当該コードの

    <?php
        //get post type ==> portfolio
            global $post;
            $args = array(
                'post_type' =>'portfolio',
                'numberposts' => '4'
            );
            $portfolio_posts = get_posts($args);
        ?>

    部分です。取得したい情報を変えるときは get_posts の引数(この場合は$args野中身の配列)を変えればOKです。ここで 'numberposts' => '2' とすれば最新の2件になります。

    次にd.w.cさんのやりたい「固定」の仕方ですが、方法は色々あります。

    • 投稿IDで決めうち。
      メリット:最初のコードを書くのが楽。
      デメリット:後から変更しようと思ったらテンプレートを修正しないといけない。
    • カスタムフィールドを使う
      メリット:表示したい投稿をダッシュボードから選択できる。
      デメリット:カスタムフィールドでできるようにソースを書かないといけない。

    ID、カスタムフィールドどちらでもできそうなコードが以下になりますが、
    検証していませんので、参考程度でお願いします。

    <?php
    	//get post type ==> portfolio
    	global $post;
    	$args = array(
    		'post_type'   => 'portfolio', //カスタム投稿タイプ「portfolio」の
    		'numberposts' => '2' // 2件
    	);
    	$portfolio_posts = get_posts($args); // 投稿の取得
    
    	$args_kotei = array(
    		'post_type'   => 'portfolio', //カスタム投稿タイプ「portfolio」の
    		'offset' => '2', // 最新2件は除外
    		'numberposts' => '2', // 2件
    		'post__in' => array( 2, 5 ), // 投稿IDで固定する場合
    		// カスタムフィールド「kotei」の値が1の投稿で固定したいときは、上の1行をコメントアウトして以下の2行を使う
    		// 'meta_key' => "kotei", // カスタムフィールド「kotei」の値で調整したいとき
    		// 'meta_value' => "1", // カスタムフィールドの値が1の投稿
    	);
    	$portfolio_kotei_posts = get_posts($args_kotei); // 固定したい投稿の取得
    
    	if ($portfolio_posts or $portfolio_kotei_posts) { // 該当する投稿があったら ?>
    	<section id="home-projects" class="clearfix">(略)</h2>
    		<?php
    			$count = 0;
    			foreach($portfolio_posts as $post) : setup_postdata($post); // 最新の2件を表示
    				$count++;
    				// 以下略
    			endforeach; // ここまで最新2件
    
    			foreach($portfolio_kotei_posts as $post) : setup_postdata($post); // 固定したい2件
    				$count++;
    				// 以下略
    			endforeach; // ここまで固定2件
    		?>
    	</section><!-- /#home-projects -->
    <?php
    	}
    ?>

    途中までしかコードが記載されていないので、その部分は補足してあります。
    あとコードが長くなってしまうので途中のマークアップは省略していますので、
    今のテーマを参考に書き加えてください。

    ※カスタムフィールドの使い方などはCodexなどを参考にしてください。

    トピック投稿者 d.w.c

    (@dwc-1)

    ありがとうございます!
    まだ時間がとれず試していませんが、教えていただいたコードを元に改造してみます。

2件の返信を表示中 - 1 - 2件目 (全2件中)

トピック「自動で入れ替わるアイテムを固定させたい」には新たに返信することはできません。