サポート » 使い方全般 » 特定カテゴリー記事をループさせる方法

  • 解決済 sakamichi

    (@sakamichi)


    特定カテゴリーの記事を表示させたいのですが
    いろいろ試しましたが、全く効果ありません。

    <?php
    		$gallery_cats = get_ds_option('album_cats_gallery_page');
    		if($gallery_cats) {
    			$tax_query = array(
    		    	'relation' => 'AND',
    				array(
    					'taxonomy' => 'ds-gallery-category',
    					'field' => 'slug',
    					<strong>'terms' => preg_split("/\s*,\s*/", $gallery_cats), </strong>
    					'include_children' => true,
    					'operator' => 'IN'
    				)
    		    );
    		} else {
    			$tax_query = '';
    		}
    		$loop = new WP_Query( array(
    			'post_type' => 'ds-gallery',
    			'posts_per_page' => -1,
    			'tax_query' => $tax_query
    		));
    		?>
    		<section class="albums-thumbnails clearfix">
    		<?php while ( $loop->have_posts() ) : $loop->the_post();  ?>
    			<a class="project-thumb" href="<?php the_permalink(); ?>" data-album-id="<?php
    echo $post->post_name; ?>">
    				<div class="project-thumb-inside">
    					<?php
    					if ( has_post_thumbnail($post->ID) ) {
    						the_post_thumbnail( 'gallery-thumb' );
    					} else {
    						$post_meta = get_post_custom();
    						$post_meta = unserialize( $post_meta['dsframework-gallery'][0] );
    						if( isset( $post_meta['attachment_urls'] ) ) {
    							$image_urls = $post_meta['attachment_ids'];
    							echo wp_get_attachment_image( $image_urls[0], 'gallery-thumb' );
    						} else {
    							echo '<div style="width: 360px; height: 250px; background:
    grey;">' . __('Album images not found.', 'dsframework') . '</div>';
    						}
    					}
    					?>
    					<h4 class="project-title"><?php the_title(); ?></h4>
    					<p class="project-description"><?php echo get_the_excerpt(); ?></p>
    				</div>
    			</a>
    		<?php endwhile; ?>
    		</section>
    		<?php wp_reset_postdata(); ?>

    ‘terms’ => preg_split(“/\s*,\s*/”, $gallery_cats),
    ここに表示させたいスラッグを入れてみましたが、効果なしでした。

    或は特定カテゴリーを除外させる方法もやってみたのですが、効果なしでした。

    どの部分を変えれば、効果が出るのかわかりますでしょうか?

    以下のテンプレートを使用しています。
    http://dimsemenov.com/themes/touchfolio/demo/

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    get_ds_optionの返り値が分からないとなんともアドバイスしようがありません。
    下記のコードで確認してみてください。

    $gallery_cats = get_ds_option('album_cats_gallery_page');
    var_dump($gallery_cats);

    あと、コード中に strong タグが混じっているのはコピペミスか何かでしょうか。

    トピック投稿者 sakamichi

    (@sakamichi)

    大雑把な質問の仕方ですみません。早速、ご返答いただきありがとうございました。
    どこを変更すれば、いいのか分からなくなっている状況です。
    ※コード中のstrongタグは誤りです。

    gallery-categoryのスラッグは、worksとgoodsがあります。
    IDはそれぞれ、2,3です。
    worksだけのページ、goodsだけのページにしたいのですが、
    全てが表示されてしまいます。

    アドバイスいただいた記述を追加してみましが、私の知識が足りないせいか
    効果がありませんでした。

    以下はworksカテゴリの記事のみを表示させるため試してみた記述ですが、
    全記事が表示されてしまいます。

    <?php
    	$gallery_cats = get_ds_option( 'album_cats_gallery_page' );
    	if( $gallery_cats ) {
           $tax_query = array (
                   array(
                     'taxonomy' => 'ds-gallery-category',
                       'terms' => array( 'goods' ),
                       'field' => 'slug',
                       'operator' => 'NOT IN',
                   )
            );
    } else {$tax_query = '';
    }
    			$loop = new WP_Query( array(
    			'post_type' => 'ds-gallery',
    			'posts_per_page' => -1,
    			'tax_query' => $tax_query
    					));
    					?>
    モデレーター Takuro Hishikawa

    (@hissy)

    get_ds_optionという関数はWordPressの標準関数ではありませんので、挙動が全く不明です。どういう値が返ってくるのかが分からないとアドバイスのしようがありません。下記のコードは$gallery_cats変数の中身を確認するためのものです。表示されたコードを教えてください。よろしくお願いします。

    $gallery_cats = get_ds_option('album_cats_gallery_page');
    var_dump($gallery_cats);
    トピック投稿者 sakamichi

    (@sakamichi)

    関数をしっかりと理解していないのでご迷惑おかけします。

    Parse error: syntax error, unexpected T_ELSE in
    /home/sites/省略/ds-gallery-template.php on line 32
    と表示されました。

    19 	<?php
    20 	$gallery_cats = get_ds_option('album_cats_gallery_page');
    21    var_dump($gallery_cats); {
    22 	$tax_query = array(
    23 	'relation' => 'AND',
    24 		array(
    25 		'taxonomy' => 'ds-gallery-category',
    26 		field' => 'slug',
    27 		terms' => preg_split("/\s*,\s*/", $gallery_cats),
    28 		'include_children' => true,
    29 		'operator' => 'IN'
    30 				)
    31 			    );
    32 			} else {
    33 			$tax_query = '';
    34 					}
    35 		$loop = new WP_Query( array(
    36 			'post_type' => 'ds-gallery',
    37 			'posts_per_page' => -1,
    38 			'tax_query' => $tax_query
    39 		));
    40 		?>
    41 		<?php while ( $loop->have_posts() ) : $loop->the_post();  ?>
    42 		<?php get_template_part( 'content', 'ds-gallery' ); ?>
    43 		<?php endwhile; ?>
    44 		<?php wp_reset_postdata(); ?>

    よくよく見てみるとtheme optionsというメニューで表示されるカテゴリを選べる設定がありました。
    でも、これを使うとこのメニューで選択していないカテゴリーが表示されなくなってしまうので
    結果、困ってしまいます。

    そして、「theme-options.php」というファイルがありました。
    この中にgalleryに関するoptionがあったので、このファイルを元に動いているのかもしれませんね。
    これを変更するのは大変そうなので、別の表示される方法を考えてみようと思います。

    モデレーター Takuro Hishikawa

    (@hissy)

    いやいや、下記のコード「だけ」をテンプレートに書いて、どう表示されるか教えてもらえますか…。単に、get_ds_option関数がどういう挙動をするのか確認したいだけです。それ以外のコードは全部削除してもらって構いません。

    $gallery_cats = get_ds_option('album_cats_gallery_page');
    var_dump($gallery_cats);
    トピック投稿者 sakamichi

    (@sakamichi)

    理解できていなくて申し訳ありません。
    結果は、そのまま上記のコードが表示されました。
    これで何か解決策はあるのでしょうか。

    ちなみにtheme-options.phpというファイルの中に
    gallery表示に関係しそうだと思うコードが以下になります。

    $of_options[] = array( "name" => __("Album categories in gallery page", 'dsframework'),
                        "desc" => __("Comma separated album categories to be displayed in galleries page template (usually home page). Leave empty to display all.", 'dsframework'),
                        "id" => "album_cats_gallery_page",
                        "std" => "",
                        "type" => "text");

    お手数おかけします。

    モデレーター gatespace

    (@gatespace)

    PHPのコードなんですから <?php ?>で囲まないとダメなじゃない?

    トピック投稿者 sakamichi

    (@sakamichi)

    すみません。お恥ずかしい限りです。
    以下のように表示されました。

    string(7) “gallery”

    よろしくお願いします。

    モデレーター Takuro Hishikawa

    (@hissy)

    $gallery_catsの中身は “gallery” という文字列ということですね。これは何かに使いますか?$gallery_catsの中身に何かセットされている場合はカテゴリーで絞り込み、そうでないときなすべてのカテゴリーの記事を表示するということでしょうか。

    トピック投稿者 sakamichi

    (@sakamichi)

    ありがとうございます!

    >$gallery_catsの中身に何かセットされている場合はカテゴリーで絞り込み、そうでないときなすべてのカテゴリーの記事を表示するということでしょうか。

    これをヒントに
    terms’ => preg_split(“/\s*,\s*/”, $gallery_cats), を
    terms’ => ‘gallery’, もしくは terms’ => ‘works’,
    スラッグ名を入れたら、それぞれのカテゴリー記事だけが表示されました!

    どこをどう直して良いのか、わからなかったので助かりました。
    感謝いたします。

    モデレーター Takuro Hishikawa

    (@hissy)

    なるほど、解決の糸口になって良かったです。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「特定カテゴリー記事をループさせる方法」には新たに返信することはできません。