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

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

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

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

PHP

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

Q&A

解決済

1回答

1338閲覧

他wordpressのデータベースより記事を細かく取得する場合

dondon1965

総合スコア17

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/03/31 07:32

お世話になっております。
PHPのプログラムがあまり分からないので質問させてください。

wordpressで作成した店舗のホームページに「お客様の声」なるページがあり
現在カスタム投稿タイプで(voice)で制作しました。
この店舗が3店舗に増えたのでこの「お客様の声」を全店舗に反映したいという要望です。

https://teratail.com/questions/58785
こちらのページを参考にして見よう見まねでコードを書きました。

functionページ

/*DB設定を行います。*/ $another_db_name = 'dbname'; $another_db_user = 'dbuser'; $another_db_pass = 'dbpass'; $another_db_host = 'another_host'; $another_tb_prefix = 'wp_'; $anoteher_wpdb = new wpdb($another_db_user, $another_db_pass, $another_db_name, $another_db_host); //プレフィックスの設定 $anoteher_wpdb->set_prefix($another_tb_prefix);

続いて出力のテンプレートページ voice.php

<?php //お客様の声出力 $results = $anoteher_wpdb->get_results(" SELECT post_title, guid, ID, post_date, post_content FROM $anoteher_wpdb->posts WHERE post_type = 'voice' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 10 " ); ?> <?php //表示 foreach ($results as $value) { $date = str_replace('-', '/', mb_substr($value->post_date, 0, 10)); ?> <div> <p class="category"><?=$categories[0]["name"]?></p> <p class="title"><a href="<?=$value->guid?>"><?=$value->post_title?></a></p> <p class=""><?=$value->post_content?></p> <p class="date"><?=$date?></p> </div> <?php } ?>

となった時に10件の「お客様の声」の出力は見事されたのですがここからよくわかりません。

(1)これをよくあるブログのように5件ごとのページネーションをつけて出力はできるのでしょうか?
(※例えば1ページ毎に10件の新しい投稿を出して、古い投稿は先送りするみたいな感じです。
オリジナルのお客様の声はPage-naviのプラグインを使っています。)

(2)ADF(カスタムフィールド)のプラグインにて表示されている部分があるのですが
こういった部分は転用して出力できるものなのでしょうか?

別のデータベースより読み込まれるのなら可能かと思いますが…どうもよくわかりません。
もしご教授をいただけますと助かります。どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

(1)これをよくあるブログのように5件ごとのページネーションをつけて出力はできるのでしょうか?

(※例えば1ページ毎に10件の新しい投稿を出して、古い投稿は先送りするみたいな感じです。
オリジナルのお客様の声はPage-naviのプラグインを使っています。)

これは、以下のようにすればページネーションつきで表示できます。
$wpdbや件数、投稿タイプの記載は適宜書き換えてください。

PHP

1<?php 2/* 3Template Name: 私のカスタムページ 4*/ 5get_header(); 6 7// 1ページ毎に表示したい件数 8$posts_per_page = 3; 9 10$paged = get_query_var("paged")?get_query_var("paged"):1; 11$offset = ($paged - 1) * $posts_per_page; 12 13$results_for_maxpage = $wpdb->get_results(" 14 SELECT ID 15 FROM $wpdb->posts 16 WHERE post_type = 'post' 17 AND post_status = 'publish' 18 ORDER BY post_date DESC" 19); 20$max_num_pages = ceil(count($results_for_maxpage) / $posts_per_page); 21 22$results = $wpdb->get_results(" 23 SELECT post_title, guid, ID, post_date, post_content 24 FROM $wpdb->posts 25 WHERE post_type = 'post' 26 AND post_status = 'publish' 27 ORDER BY post_date DESC 28 LIMIT $posts_per_page 29 OFFSET $offset" 30); 31 32foreach ($results as $value) { 33 echo "<div>"; 34 echo "<p>$value->post_title</p>"; 35 echo "</div>"; 36} 37 38$big = 999999999; // need an unlikely integer 39 40echo paginate_links( array( 41 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 42 'format' => '?paged=%#%', 43 'current' => max( 1, get_query_var('paged') ), 44 'total' => $max_num_pages 45) ); 46 47get_footer();

(2)ADF(カスタムフィールド)のプラグインにて表示されている部分があるのですが

こういった部分は転用して出力できるものなのでしょうか?

上記コードで取得した投稿IDとカスタムフィールド名でデータベースを検索するSQLを書けば実現できます。

投稿2020/04/08 05:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dondon1965

2020/04/08 20:40 編集

onodaさま ご回答いただきありがとうございます。感謝申し上げます。 改めて確認しながら当方の状況に修正をさせていただいた所見事表示ができました。ありがとうございました。 (2)の上記コードで取得した投稿IDとカスタムフィールド名でデータベースを検索するSQLを書けば実現できるとのことで他のご質問を参考に自力で考えてみたいと思います。 万一分からなければまた違う質問でさせていただきますのでどうぞよろしくお願い致します。 この度は誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問