サポート » 使い方全般 » 特定のターム一覧で内容がない記事タイトルはリンクなしにしたい

  • 解決済 takamaniax

    (@takamaniax)


    例えば…

    果物
     ・みかん
     ・りんご
     ・ぶどう

    動物
     ・ライオン
     ・ゾウ
     ・パンダ

    という出力を

    <ul>
    <?php query_posts( 'カスタム分類=fruits' ); ?>
    <?php if(have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a><?php the_title(); ?></a></li>
    <?php endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>
    
    <ul>
    <?php query_posts( 'カスタム分類=animal' ); ?>
    <?php if(have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a><?php the_title(); ?></a></li>
    <?php endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>

    というサブループで表示してます。
    しかし、『りんご』という記事には内容がありませんので、リンクしないようにしたいです。
    要するに内容が空でない場合はリンク付きのタイトルを表示し、空の場合はタイトルのみ表示したいです。

    http://ja.forums.wordpress.org/topic/8730?replies=3

    上記のやり方で何度も試しましたが、ページが真っ白になります。
    何がいけないのでしょうか?また他の方法がありましたらご教授お願いします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは

    しかし、『りんご』という記事には内容がありませんので、リンクしないようにしたいです。

    りんごというカスタムタグを持つ投稿がないのですか?それとも、投稿はあるんだけれど、本文が空欄という意味ですか?

    また、リンクをつける付けないの部分が出来ないのですか? リンクを付けた一覧の表示は出来ているのですか?

    上記のやり方で何度も試しましたが、ページが真っ白になります。
    何がいけないのでしょうか?また他の方法がありましたらご教授お願いします。

    コードを記述するようなカスタマイズをする場合は、デバッグモードの理解が必須です。

    http://codex.wordpress.org/Debugging_in_WordPress

    りんごというカスタムタグを持つ投稿がないのですか?
    それとも、投稿はあるんだけれど、本文が空欄という意味ですか?

    そうです。『みかん』には本文があるのですが、『りんご』には本文がありません。
    よって、『みかん』に関しては詳細ページにリンクしても問題ないですが、
    『りんご』には詳細ページへのリンクは必要ないということです。

    また、リンクをつける付けないの部分が出来ないのですか? リンクを付けた一覧の表示は出来ているのですか?

    一覧表示はリンク付きで出来てます。
    リンクの有り無しの分岐ができません。
    わかりづらくて申し訳ございません。
    よろしくお願いします。

    以下のように分岐する事ができると思います。

    while (have_posts()) {
    	the_post();
    	$naiyou = get_the_content();
    
    	if( ! empty( $naiyou ) ) {
    		?><li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li><?php
    	} else {
    		?><li><?php the_title(); ?></li><?php
    	}
    }
    <ul>
    <?php query_posts( 'カスタム分類=fruits' ); ?>
    <?php if(have_posts()) : while (have_posts()) {
    	the_post();
    	$naiyou = get_the_content();
    
    	if( ! empty( $naiyou ) ) {
    		?><li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li><?php
    	} else {
    		?><li><?php the_title(); ?></li><?php
    	}
    } endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>

    ということでしょうか?
    無知で申し訳ございません。
    白紙になってしました。

    一覧表示はリンク付きで出来てます。
    リンクの有り無しの分岐ができません。

    とのことだったので、余分を省きましたが、

    たぶん

    <?php query_posts( 'カスタム分類=fruits' ); ?>

    と書いていたんではないですか?

    一連の流れを書いて見ましたので、ご参考まで

    http://tenman.info/labo/snip/archives/4440

    何度もご丁寧に教えていただきありがとうございます。
    ただ、教えていただいた方法でも無理でした。白紙になります。

    function create_post_type_materials() {
    	$labels = array(
    		'name'=> '成分',
    		'all_items' => '成分の一覧',
    	);
    	$args = array(
    		'labels' => $labels,
    		'supports' => array('title','editor','excerpt','thumbnail'),
    		'public' => true, // 公開するかどうか
    		'show_ui' => true, // メニューに表示するかどうか
    		'menu_position' => 5, // メニューの表示位置
    		'has_archive' => true, // アーカイブページの作成
    	);
    	register_post_type( 'materials', $args );
    }
    add_action( 'init', 'create_post_type_materials', 0 );
    
    // 成分タクソノミー
    function create_custom_taxonomy_materials() {
    	register_taxonomy(
    		'materials-cat', // カスタム分類名
    		'materials', // カスタム分類を使用する投稿タイプ名
    		array(
    			'hierarchical' => true,
    			'label' => '成分カテゴリー',
    			'singular_label' => '成分カテゴリー',
    			'public' => true,
    			'show_ui' => true,
    		)
    	);
    }

    今回、上記のようなカスタム投稿タイプをfunctions.phpに書き込んで投稿してます。

    <h2>あ行</h2>
    <ul>
    <?php query_posts( 'materials-cat=a_column' ); ?>
    <?php if(have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a><?php the_title(); ?></a></li>
    <?php endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>
    
    <h2>か行</h2>
    <ul>
    <?php query_posts( 'materials-cat=ka_column' ); ?>
    <?php if(have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a><?php the_title(); ?></a></li>
    <?php endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>
    
    <h2>さ行</h2>
    <ul>
    <?php query_posts( 'materials-cat=sa_column' ); ?>
    <?php if(have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a><?php the_title(); ?></a></li>
    <?php endwhile; else: endif?>
    <?php wp_reset_query(); ?>
    </ul>
    
    :
    :
    :

    上記のやり方でリンク付きのリストは問題なく表示できております。
    この表記自体間違ってるのでしょうか?

    http://wordpress.org/plugins/debug-bar/

    debug bar プラグインをインストールして、

    wp-config.phpの WP_DEBUG 定数を trueにセットしていただくと、

    define('WP_DEBUG',true);

    何処で、どんなエラーが発生しているか拾えるので試してみてください

    <?php if(empty($post->post_content)): ?>
    	<li><?php the_title(); ?></li>
    <?php else(): ?>
    	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endif; ?>

    自己解決しました。
    単純に上記のようにしたら希望通りになりました。
    ありがとうございました。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「特定のターム一覧で内容がない記事タイトルはリンクなしにしたい」には新たに返信することはできません。