内容の修正が必要ですが原因がわかりません
1.投稿に画像やカテゴリーなどが表示されず、タイトルと日付けのみ表示されている
2.RSS画像にURLがついておらず画像のみ表示されている
3.RSSの画像がない場合ダミー画像を表示させたいが書き方が調べてもわからない
<?php
$dbh = connect_db();
$categories = [];
foreach (get_categories() as $category) {
$categories[$category->cat_ID] = $category;
}
function set_other_data($post)
{
// アイキャッチIDを取得
$post_thumbnail_id = get_post_thumbnail_id($post);
// アイキャッチ画像の確認
if ($post_thumbnail_id) {
// 存在する
$image_src = wp_get_attachment_image_src($post_thumbnail_id);
// サムネイルの画像URLを設定
$post->thumbnail = $image_src[0];
} else {
// 存在しない
$post->thumbnail = 'noimage.jpg';
}
// カテゴリーIDを取得
$post->categories = wp_get_post_categories($post->ID);
// コメントテキスト
if (0 == $post->comment_count) {
// コメントなし
$post->comments = __('No Comments');
} else {
// コメントあり
$post->comments = $post->comment_count.'件のコメント';
}
// コメントリンク
$post->comments_link = get_comments_link($post->ID);
}
delete_old_rss($dbh);//接続オブジェクトを渡す
//RSS保存
$dbh = connect_db();//①
$stmt = $dbh->prepare('insert into rss_feed (title, link, date, img) values (?, ?, ?, ?) on duplicate key update title=?, link=?, date=?, img=?');//②
$url1 = get_rss_site_url();
foreach ($url1 as $url) {
if (($rss = @simplexml_load_file($url)) === false) {
continue;
}
foreach ($rss->item as $item) {
$dc = $item->children('dc', true);
$date = date('Y-m-d H:i:s', strtotime($dc->date));
if ($date < $delete_date) {
continue;
}
$title = $item->title;
$link = $item->link;
$content = $item->children('content', true);
$result = preg_match('/<img[^>]*src=\"([^"]+)\"[^>]*>/i', $content->encoded, $matches);
if (1 == $result) {
$img = $matches[1];
} else {
$img = '';
}
$stmt->execute([$title, $link, $date, $img, $title, $link, $date, $img]);
}
}
if (ctype_digit($_REQUEST['page'])) {
$current_page = (int) $_REQUEST['page'];
} else {
$current_page = 1;
}
if ($current_page > $wp_query->max_num_pages) {
$current_page = $wp_query->max_num_pages;
}
$block_per_page = 2;
$rss_per_block = 18;
$posts_per_block = $wp_query->post_count / $block_per_page;
//RSS読み込み
$rss_per_page = $block_per_page * $rss_per_block;
$rss_offset = ($current_page - 1) * $rss_per_page;
$sql = 'SELECT * FROM rss_feed ORDER BY date DESC LIMIT ?,?';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $rss_offset, PDO::PARAM_INT);
$stmt->bindParam(2, $rss_per_page, PDO::PARAM_INT);
$stmt->execute();
$rss_items = $stmt->fetchAll(PDO::FETCH_OBJ);
$posts_per_page = $block_per_page * $posts_per_block;
$posts_offset = ($current_page - 1) * $posts_per_page;
$args = [
'posts_per_page' => $posts_per_page,
'offset' => $posts_offset,
];
$post_items = get_posts($args);
//表示
for ($i = 0; $i < $block_per_page; ++$i) {
echo '<h2>ブロック</h2>';
echo '<h3>RSS</h3>';
for ($j = 0; $j < $rss_per_block; ++$j) {
$item_index = $i * $rss_per_block + $j;
if ($item_index >= count($rss_items)) {
break;
}
$item = $rss_items[$item_index];
echo '<ul>';
echo "<li class=\"sitelink\"><a href=\"{$item->link}\">{$item->title}</a></li>";
echo "<li class=\"sitelink\"><a href=\"{$item->link}\">site</a></li>";
echo "<li class=\"sitedate\">{$item->date}</li>";
if (!empty($item->img)) {
echo "<li><img src=\"{$item->img}\" width=\"100\"></li>";
}
echo '</ul>';
}
echo '<h3>投稿</h3>';
for ($j = 0; $j < $posts_per_block; ++$j) {
$item_index = $i * $posts_per_block + $j;
if ($item_index >= count($post_items)) {
break;
}
$item = $post_items[$item_index];
echo '<ul>';
echo "<li><a href=\"{$item->guid}\">{$item->post_title}</a></li>";
echo "<li>{$item->post_date}</li>";
echo '</ul>';
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
1.
関数 get_posts が返すデータ仕様を確認しましょう
推測するに関数 set_other_data を呼ぶ必要があるのでは?
例:
$post_items = get_posts($args);
$item = $post_items[$item_index];
set_other_data($item);
echo "<li><img src={$item->thumbnail}></li>";
2.
<li><a href={$item->link}><img src={$item->img}></a></li>
3.
$imgsrc = $item->img ?? 'ダミー画像URL';
echo "<img src={$imgsrc}>";
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP functionsでどこまで括るのか固定ページはどの範囲までphpを書くのが正解なのかわかりません 2 2022/02/04 16:45
- PHP FeedPHPでfeedをHTML表示を11個目から20個目のように出力したい 2 2021/11/25 10:34
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP wordpressのファイル構成について 4 2022/02/05 23:22
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
laravelを利用してコントロール...
-
ストアドプロシージャーでルー...
-
ブックマークレットで他ドメイ...
-
HTMLで前の画面に戻る時、入力...
-
Javascript→PHPに...
-
<input type="hidden" >で配列...
-
【PHP】 文字サイズの変更につ...
-
PHPの関数実行
-
cookieでチェックボックスの状...
-
PHP ボタンが押されたら処理を...
-
フォームボタンを押すたびに数...
-
PHPで部分一致検索をしたい
-
ファイル名を変更してアップロ...
-
POSTできない
-
Flaskでサーバー立ち上げに関して
-
「"」(ダブルクォーテーション)...
-
セッションを使わずに遷移先画...
-
フォームで作った送信ボタンが...
-
【HTML(PHP?)】複数のフォーム...
-
入力フォーム→確認画面→送信画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
laravelを利用してコントロール...
-
サーバ上でGETはできるがPOSTが...
-
高高兴兴は高兴と何が違います...
-
POSTの値を配列として受け取っ...
-
pythonのhttp.serverでpostされ...
-
POSTを使わずに値を渡す方法
-
[Smarty] 空の変数は0に反応す...
-
バックスラッシュの対策について
-
アコーディオンPHPが上手くいか...
-
大鏡「若き日の道長」の訳
-
ブックマークレットで他ドメイ...
-
$_SERVER['REQUEST_METHOD']と"...
-
【smarty】予約変数に可変変数
-
プログラムの複製(VB.net)
-
ストアドプロシージャーでルー...
-
郵便番号検索
-
php foreach文
-
<input type="hidden" >で配列...
-
重複を防ぐ記述について教えて...
-
HTMLで前の画面に戻る時、入力...
おすすめ情報