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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

1回答

2008閲覧

カスタム投稿タイプで「関連する人気記事一覧」を表示したいです

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2016/10/23 06:23

###■目的と質問
WP-PostViewsというプラグインを使って、「現在表示中の記事のカテゴリ内の、人気記事」を表示したいです。(ただしカスタム投稿タイプになります。)
下記に現状のコードを記載しましたので、間違っている部分をご指摘いただければ幸いです。
よろしくお願いいたします。

###■現状のfuntions.phpのコード

  • test1というカスタム投稿タイプがある
  • test1に所属する、test1-categoryというカスタムタクソノミーがある
  • 今表示している記事と同じタームがついた記事を、カスタムフィールドViewsの順番で5件表示したい

php

1// カスタム投稿タイプの追加 2add_action( 'init', 'custum_post_type' ); 3function custum_post_type() { 4 //test1の投稿タイプ追加 5 register_post_type( 'test1', 6 array('labels' => 7 array( 8 'name' => __( 'test1' ), 9 'singular_name' => __( 'test1' ) 10 ), 11 //投稿タイプの設定 12 'public' => true, 13 'menu_position' => 5, 14 'hierarchicla' => false, 15 'has_archive' => true, 16 //パーマリンクを /test1/投稿名/ にします。 17 'rewrite' => array( 18 'slug' => 'wp-test1' 19 ), 20 //投稿編集ページの設定 21 'supports' => array('title','editor','thumbnail', //タイトル,編集,アイキャッチ 22 'custom-fields','excerpt','author','trackbacks', //カスタムフィールド,抜粋文&作成者,トラックバック 23 'comments','revisions','page-attributes') //コメント,リビジョン,作成者,表示順のボックス 24 ) 25 ); 26 //test1のカテゴリー追加 27register_taxonomy( 28 'test1-category', /* タクソノミーのslug */ 29 'test1', /* 属する投稿タイプ */ 30 array( 31 'hierarchical' => true, 32 'update_count_callback' => '_update_post_term_count', 33 'label' => 'カテゴリー', 34 'singular_label' => 'カテゴリー', 35 'public' => true, 36 'show_ui' => true 37 ) 38); 39}

###■現状のsingle.phpのコード

php

1<?php 2$terms = the_terms(get_the_ID(),'test1-category'); 3$term_ids = array(); 4foreach($terms as $term){ 5 $term_ids[] = $term->term_id; 6} 7$args = array( 8 'post_type' => 'test1', 9 'posts_per_page' => 5, 10 'meta_key' => 'views', 11 'orderby' => 'meta_value_num', 12 'tax_query' => array( 13 array( 14 'taxonomy' => 'test1-category', 15 'field' => 'term_id', 16 'terms' => $term_ids, 17 'operator' => 'IN' 18 ), 19 ), 20); 21$posts = get_posts($args); ?> 22 23<div class="wp-postviews"> 24 <h3>関連記事</h3> 25 <ol> 26 <?php foreach($posts as $post): setup_postdata($post); ?> 27 <li>...表示の内容...</li> 28 <?php wp_reset_postdata(); endforeach; ?> 29 </ol> 30</div>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ざっと見て気になったのはthe_termsです。the_termsは結果をその場で出力する関数なので、変数$termsにはnullfalseしか入らないと思います。基本的には、名前がthe_なんとかで始まるものは結果を出力、対になる名前のget_the_なんとかは結果を返す関数になります。

あと、テーマの作成中はをWP_DEBUGを有効にして、エラーが表示されるようにしたほうが良いと思います。ノーヒントで修正作業を続けると精神を病みます。

wp-config.php

php

1define( 'WP_DEBUG', true );

参考

関数リファレンス/the terms
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/the_terms

関数リファレンス/get the terms
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_the_terms

WordPressでのデバッグ
https://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0

投稿2016/10/23 23:48

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/24 05:04

ヒントをありがとうございます。も少し奮闘してみます('◇')ゞ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問