質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.05%

  • PHP

    17224questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Custom Post Type UIで登録したデータの一覧が表示されなくなった

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 95

mitsuki33

score 2

前提・実現したいこと

WPでサイトを作っています。あるサイトのデータの修正を頼まれました。少し前まではちゃんと表示されていたCustom Post Type UIで登録したデータの一覧が表示されなくなったそうです。元は自分が組んだシステムではないのと、PHP初心者なので八方塞がりです。
ちゃんと表示するためにはどこを修正すればいいでしょうか?

該当のソースコード

    /**
     * Template Name: Product manga
     */
    get_header('genre');

    //URLからページ数を取得する
    $wparms = split("/",$_SERVER["REQUEST_URI"]);
    $i=0;
    foreach ($wparms as &$value) {
        $i = $i + 1;
        if ($value == 'page'){ 
            $paged = $wparms[$i];
        }
    }
    //注目のキーワード取得
    $content = get_post($post->ID);
    $attention_keywords = split(",",$content->post_content);

    //キーワード取得
    if(isset($_GET['keyword']) && !empty($_GET['keyword'])){
        $KEYWORD = htmlspecialchars($_GET['keyword']);
        $INDEX_TITLE = '商品検索結果';
    }else{
        $KEYWORD = '';
        $INDEX_TITLE = 'タイトル一覧';
        if (!empty($_GET['manga'])){
            $INDEX_TITLE = '「' . htmlspecialchars($_GET['manga']) . "」の" . $INDEX_TITLE;
        }
    }
        //ソートパラメータ取得
    if(isset($_GET['order'])){
        switch ($_GET['order']) {
            case '1':
                $ORDER = 'DESC';
                break;
            case '2':
                $ORDER = 'ASC';
                break;
            default:
                $ORDER = 'DESC';
                break;
        }
    }else{
        $ORDER = 'DESC';
    }
    //データ取得設定
        $args = array(
            'post_type'        => 'product_manga',
            'post_status'    =>'publish',
            'paged'            => $paged,
            's'                => $KEYWORD,
            'meta_key'        => '発売日(ソート用)',
            'orderby'        => 'meta_value',
            'order'            => $ORDER,
            'posts_per_page' => '10'
        );

    if(isset($_GET['manga']) && !empty($_GET['manga'])){
        $args = array(
            'post_type'        => 'product_manga',
            'post_status'    =>'publish',
            'paged'            => $paged,
            'meta_key'        => '発売日(ソート用)',
            'orderby'        => 'meta_value',
            'order'            => $ORDER,
            'posts_per_page' => '10',
            'tax_query'    => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'manga',
                    'terms' => $_GET['manga'],
                    'include_children' => true,
                    'field' => 'slug',
                    'operator' => 'IN'
                ),
            ),
        );
    }

    //データ取得
    query_posts( $args );

    //ヒット件数取得
    $HITS =  $wp_query->found_posts;
    if (empty($paged)){
        $paged = 1;
    }

    if ($wp_query->found_posts > ($paged * 10)){
        $EPAGE = $paged * 10;
    }else{
        $EPAGE = $HITS;
    }

 ?>    
<div id="contents" class="clearfix">
<!-- 再検索エリア -->
<!-- 見出し -->
<?php if(empty($_GET['manga'])){ ?>
<div class="row">
    <div class="col span_24">
        <h2 title="">キーワードで検索</h2>
    </div>
</div><!-- row -->
<!-- /見出し -->

<!-- フォーム -->
<div class="row search2_bg_up">
    <form action="<?php bloginfo('url'); ?>/products/manga/" method="get">
    <div class="colf span_6 span_dummy">
        &nbsp;
    </div>
    <div class="colf span_10">
        <div class="fright">
            <input type="text" size="60" name="keyword" value="<?php echo $KEYWORD; ?>" placeholder="検索キーワード" class="search2">
        </div>
    </div>
    <div class="colf span_4">
        <div class="fright">
            <span class="search2_link" onclick="submit()">検索</span>
        </div>
    </div>
    </form>
</div><!-- row search2_bg_up-->
<!-- /フォーム -->
<!-- 注目キーワード -->
<!-- 注目キーワードが無い、必要ない場合はこのエリアを削除 -->
<div class="row search2_bg_dn">
    <div class="colf span_6 span_dummy">
        &nbsp;
    </div>
    <div class="colf span_4">
        <span class="bold">注目キーワード</span>
    </div>
    <div class="colf span_14">
        <!-- 注目キーワードの数だけ配置 -->
         <a href="<?php bloginfo('url'); ?>/products/manga/?keyword=<?php echo $attention_keywords[0]; ?>"><?php echo $attention_keywords[0]; ?></a>
         <a href="<?php bloginfo('url'); ?>/products/manga/?keyword=<?php echo $attention_keywords[1]; ?>"><?php echo $attention_keywords[1]; ?></a>
         <a href="<?php bloginfo('url'); ?>/products/manga/?keyword=<?php echo $attention_keywords[2]; ?>"><?php echo $attention_keywords[2]; ?></a>
    </div>
</div><!-- row search2_bg_dn-->
<!-- /注目キーワード -->
<?php } ?>

<!-- /再検索エリア -->
<!-- 検索結果エリア -->
    <!-- 見出し -->
    <div class="row">
        <div class="col span_24">
            <h2 title=""><?php echo $INDEX_TITLE; ?></h2>
        </div>
    </div><!-- row -->
    <!-- /見出し -->

<?php if ($HITS > 0){ ?>
<!-- 検索結果ありの場合のみ表示 -->
    <!-- 並び順選択 -->
    <div class="row">

        <div class="col span_24">
            <!-- 現在選択されているものは、spanにして sort_selected を付加 -->
            <div class="sort">
            並び替え :
    <?php if ($ORDER == 'DESC'){ ?>
            | <span class="sort_selected">新しい順</span>
            | <a href="?order=2&keyword=<?php echo $KEYWORD; ?><?php if (!empty($_GET['manga'])) { echo '&manga=' . $_GET['manga']; } ?>">古い順</a>
    <?php } else { ?>
            | <a href="?order=1&keyword=<?php echo $KEYWORD; ?><?php if (!empty($_GET['manga'])) { echo '&manga=' . $_GET['manga']; } ?>">新しい順</a>
            | <span class="sort_selected">古い順</span>
    <?php } ?>
            <span class="span_off">| </span><span class="span_on"><br /></span>
            <!-- 結果情報 -->
            <?php echo (($paged - 1) * 10) + 1; ?>件~<?php echo $EPAGE; ?>件 (全<?php echo $HITS; ?>件)
            </div>
        </div>

    </div><!-- row -->
    <!-- /並び順 -->
<!-- /検索結果ありの場合のみ表示 -->
<?php } ?>

<!-- 結果一覧 -->
    <div class="row">

        <div class="col span_15">

<?php if ($HITS == 0){ ?>
        <!-- 0件の場合はこちら -->
            <div class="notfound large">
                商品が見つかりませんでした
            </div>
        <!-- /0件の場合はこちら -->

<?php }else{ ?>
    <?php
         while (have_posts()) : the_post();

            //一般とコンビニでどっちが早いか
            $HATSUBAIBI1 = get_post_meta($post->ID, '発売日(一般販売一次)',true);     
            $HATSUBAIBI2 = get_post_meta($post->ID, '発売日(コンビニ発売時)',true);
            if (isset($HATSUBAIBI1) && empty($HATSUBAIBI2)){
                $DVD = 1;
            } elseif (isset($HATSUBAIBI2) && empty($HATSUBAIBI1)){
                $DVD = 2;
            } elseif ($HATSUBAIBI1 >= $HATSUBAIBI2) {
                $DVD = 2;                
            } else {
                $DVD = 1;
            }
            if ($DVD == 1){
                $HATSUBAIBI = $HATSUBAIBI1;
                $KAKAKU = get_post_meta($post->ID, '税抜価格(一般販売一次)',true);     
            } else {
                $HATSUBAIBI = $HATSUBAIBI2;
                $KAKAKU = get_post_meta($post->ID, '税抜価格(コンビニ発売時)',true);     
            }
            if (!empty($KAKAKU)){
                $KAKAKU = number_format(round($KAKAKU * 1.00));
            }else{
                $KAKAKU = '-';
            }
            $WHATSUBAIBI = split("/",$HATSUBAIBI);
            $HATSUBAIBI = $WHATSUBAIBI[0] . '年' . $WHATSUBAIBI[1] . '月' . $WHATSUBAIBI[2] . '日';
            $HATSUBAIBI = str_replace('年0','年',$HATSUBAIBI);
            $HATSUBAIBI = str_replace('月0','月',$HATSUBAIBI);

    ?> 
        <!-- 1件以上の場合はこちら -->
        <!-- 結果商品一つ分 -->
            <hr>
            <div class="row">
                <div class="center colf span_24">
                    <dl class="line">
                        <dd class="span2 center">
                        <!-- ジャケット画像をハーフサイズ(100x141)で表示。タグにサイズ指定はしない -->
                        <!-- リンク先は詳細情報 -->
                            <a href="<?php echo get_permalink($post->ID); ?>"><img src="<?php
                                $IMAGE_URL = get_post_meta($post->ID, 'ジャケット画像URL',true);
                                if (empty($IMAGE_URL)){
                                    $IMAGE_URL = bloginfo('template_url') . '/img/noimage.png';
                                }
                                echo $IMAGE_URL;
?>" class="uimg2" alt="ジャケット"></a>
                        </dd>
                        <dd class="span8">

                            <h3><?php echo get_the_title($post->ID); ?></h3>
                            <dl class="line">
                                <dd class="span2 tag">キャスト</dd>
                                <dd class="span8"><?php echo get_post_meta($post->ID, '出演者',true); ?></dd>
                            </dl>
                            <dl class="line">
                                <dd class="span2 tag">発売日</dd>
                                <dd class="span8"><?php echo $HATSUBAIBI; ?></dd>
                            </dl>
                            <dl class="line">
                                <dd class="span2 tag">価格(税抜)</dd>
                                <dd class="span8 bold red"><?php echo $KAKAKU; ?></dd>
                            </dl>
                            <p class="clearLeft" />
                            <br />
                            <div class="center">
                                <a href="<?php echo get_permalink($post->ID); ?>" class="result_jump">&#9658;作品詳細へ</a>
                            </div>

                        </dd>
                    </dl>
                    <p class="clearLeft" />
                </div>
            </div>
        <!-- /結果商品一つ分 -->
    <?php endwhile; ?>         
<?php } ?>
        <!-- ページャーエリア -->
        <hr>
        <div class="row">
            <div class="col span_24">
                <div class="page_center bold">

<?php wp_pagenavi(); ?>
                    
                </div>
            </div>
        </div><!-- row -->
        <!-- /ページャーエリア -->
        </div><!-- colf span_15 -->

<?php

    //データ取得設定
        $args = array(
            'post_type'        => 'dvd_index_banner',
            'meta_key'        => '表示順',
            'orderby'        => 'meta_value',
            'order'            => 'DESC',
            'posts_per_page' => '10' 
        );

        //データ取得
        query_posts( $args );

?>

        <!-- 右カラムのランキング (300px) -->
        <div class="col span_9 col_ranking">
            <!-- 幅300ピクセルまでのバナー -->
<?php while (have_posts()) : the_post(); ?>
            <a href="<?php echo get_post_meta($post->ID, '遷移先URL',true); ?>" target="_blank"><img src="<?php echo get_post_meta($post->ID, 'バナー画像URL',true); ?>" width="280" height="70" class="ranking_banner"></a><br />
<?php endwhile; ?>         
            <br />
        </div><!-- colf span_9 col_ranking -->
        
    </div><!-- row -->
<!-- /結果一覧 -->
</div>
<?php 
    $page_type = 'product_manga';
    get_footer();
?>

     

試したこと  

アーカイブページではなく固定ページを一覧ページにしているので、アーカイブページ(archive-manga.php)を作って結果一覧が表示されるようにしたのですが、キーワード検索や並び替え(古い順、新しい順)の機能を設置できませんでした。     

補足情報(言語/FW/ツール等のバージョンなど)  

現在の表示は  

<?php if ($HITS == 0){ ?>
<!-- 0件の場合はこちら -->
<div class="notfound large">
商品が見つかりませんでした
</div>
<!-- /0件の場合はこちら -->
<?php }else{ ?>

   これが適応されて「商品が見つかりませんでした」になる。   商品は50件ほど登録している。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • miz

    2017/12/19 00:32 編集

    コードを記載する際はコードブロック(```で囲む)で記載してください。また、表示されなくなる前後で行ったことや質問者様が調査済みの内容についても質問文に追記してください。

    キャンセル

  • miz

    2017/12/19 00:37

    それから、「CPU UI」とは何かについても記載していただけますか。プラグインか何かでしょうか?

    キャンセル

回答 1

+2

アーカイブページではなく固定ページを一覧ページにしているので、アーカイブページ(archive-manga.php)を作って結果一覧が表示されるようにしたのですが、キーワード検索や並び替え(古い順、新しい順)の機能を設置できませんでした。

元の設計がどのようになっていたのかがわからないため具体的な回答は出来ませんが、固定ページを使用して query_posts を使う設計のものをアーカイブでの表示に切り替えてそのままうまくいくとは思えません。

大幅に変更するのなら元の設計を引き継がず新規で設計しなおすほうが早いかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/23 17:12

    回答ありがとうございます。設計し直す方向で進めたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.05%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17224questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。