tomo_chocomintさん
<h3 class="midashi">お知らせ</h3>
<table class="info">
<?php
$post_type = get_post_type_object( 'info' );//投稿タイプ = お知らせ
$args = array(
'numberposts' => 5, //表示(取得)する記事の数
'post_type' => array( $posttype_slug) , //投稿タイプの指定
'post_status' => 'publish',//非公開記事の非表示(公開のみの表示)
'has_password' => false,//パスワード記事を表示するかどうか
);
if ( have_posts( $args ) ) ://条件に合致した投稿があった時
$myposts = get_posts($args);//$argsの条件取得
foreach($myposts as $post) :
setup_postdata( $post );//重要(必ず入れる)
$post_id = get_the_ID($post_id);//投稿IDを取得
$post_link = get_permalink($post_id);
?>
<tr>
<th><?php echo date("Y年m月d日", strtotime($post->post_date)); ?></th>
<td><?php
$days=7; //Newをつける日数
$today=date_i18n('U'); $entry=get_the_time('U');
$diff1=date('U',($today - $entry))/86400;
if ($days > $diff1){
echo'<span style="background:#B20000; padding:3px; color:#fff; margin-right:5px;">New!</span>';
}
?>
info"><?php the_title($post_id); ?></td></tr>
<?php
endforeach;
wp_reset_postdata(); //クエリのリセット
else:
echo '記事がなかったときの処理';
endif;
?>
</table>
<p style="text-align:right; margin-top:10px;">一覧を見る</p>
こんな感じで如何でしょうか?
おそらくですが、setup_postdata( $post );
これがないのが原因?な感じがします。
Toro_Unit (Hiroshi Urabe)さんのおっしゃる通り、コーデックスを参考にすると
よろしいかもしれません。
稀かもしれませんが、
パスワード記事や公開以外の記事の表示が気になる場合は
‘post_status’と’has_password’で制御すると個人的には好きです。
地味なご確認ですが
カスタムフィールドではなく、カスタムポストタイプでよろしいですよね?
>>Toro_Unit (Hiroshi Urabe)さん
コメントありがとうございます。
申し訳ありませんが、phpの構文自体を理解しておらず、
タグ部分のみ見ても何処に何を貼り付けてよいのかが分かりません。。
本来であればこのフォーラムに質問するのもお門違いなのかもしれませんが、
他に質問するところが見つからなかったのでこちらに投稿いたしました。
お気を悪くされたのであれば、申し訳ございませんでした。
>>mura0403さん
詳しい解説をありがとうございます!
タグを貼り付けてみたのですが、上手くいきませんでした。。
http://yogatha.xsrv.jp/
https://gyazo.com/4a4f8fb6df075bbbf9601063233372ac
全ての投稿記事が表示され、HOMEの前に「2」という数字が付いて来ました。
やはりこのテーマでのカスタム投稿の表示は難しいのでしょうか?
お後、
× カスタムフィールド
○ カスタムポストタイプ
ですね。
大変失礼いたしました。
tomo_chocomintさん
今、組んでる途中のフロントページのソースなのですが
多分、似たような感じだと思うのでそのまま送ります。
一度、動くかどうか試してみて頂けませんか。
うちの環境では動いているのですが。
(うちの場合は、カスタムポストはfunctions.phpに直接書いてますが、多分問題ないと思われます)
<?php //トップに表示するカスタムポストの最新
$args = '';
$post_type = get_post_type_object( 'info' );//投稿タイプ = お知らせ
$posttype_slug = esc_html($post_type->name); //カスタムポストタイプのスラッグ取得
$posttype_labels = $post_type->labels;
$posttype_name = esc_html($posttype_labels->name); //カスタムポストタイプの表示名
$posttype_singular_name = esc_html($posttype_labels->singular_name ); //カスタムポストタイプの表示名
$posttype_menu_name = esc_html($posttype_labels->menu_name ); //カスタムポストタイプの表示名
$posttype_desc = esc_html($post_type->description); //カスタムポストタイプの説明文
$posttype_link = esc_url(get_post_type_archive_link($posttype_slug));
$args = array(
'numberposts' => 5, //表示(取得)する記事の数
'post_type' => array( $posttype_slug) , //投稿タイプの指定
//'orderby' => 'modified',//更新日順
'post_status' => 'publish',
'has_password' => false,//false or true
);
if ( have_posts( $args ) ) ://条件に合致した投稿があった時
$customPosts = get_posts($args);//$argsの条件取得
if($customPosts) :
echo '<h3 class="headline1" title="' .$posttype_singular_name.'|'.$posttype_desc. '">' . $posttype_singular_name . '</h3>' . PHP_EOL;
echo '<ul class="front-postlist">'.PHP_EOL;
foreach($customPosts as $post)://フォーイーチで繰り返しの開始
setup_postdata( $post );//お決まり
//↓記事開始
//タイトルの正規表示及びXSS対処
$title = get_the_title();//記事タイトル取得
$title = preg_replace('!<style.*?>.*?</style.*?>!is', '', $title);//スタイル無効
$title = preg_replace('!<script.*?>.*?</script.*?>!is', '', $title);//スクリプト無効
$title = strip_tags($title);//タグ削除
$title = mb_ereg_replace(' ', '', $title);//全角スペース削除
$title = mb_strimwidth (strip_tags($title), 0 , 50, "…", "utf-8");//表示文字数
$title = esc_html($title);//最終書き出し
//文章の正規表示及びXSS対処
$post_text = get_the_excerpt();//概要文取得
$post_text = preg_replace('!<style.*?>.*?</style.*?>!is', '', $post_text);//CSS無効
$post_text = preg_replace('!<script.*?>.*?</script.*?>!is', '', $post_text);//JS無効
$post_text = strip_tags($post_text);//タグ削除
$post_text = mb_ereg_replace(' ', '', $post_text);//全角スペース削除
$post_text = mb_strimwidth (strip_tags($post_text), 0 , 50, "…", "utf-8");//文字数制限
$post_text = esc_html($post_text);//ESC処理
//ID取得
$post_id = get_the_ID();
//パーマリンク
$post_link = get_permalink( );
$post_link = esc_html($post_link);
$post_link = esc_url($post_link);
$post_link = urldecode($post_link);
$domain = esc_html( esc_url("http://www." . $_SERVER['HTTP_HOST'] ) );//現在のドメインを取得
$post_date = $post->post_date;//投稿日
$post_modified = $post->post_modified;//更新日
$post_status = $post->post_status;//公開状態 ( publish | pending | draft | private | static | object | attachment | inherit | future )
$post_password = $post->post_password;//投稿パスワード
$post_cat = get_the_category();//カテゴリー
//newの表示プログラム
//$new_post = '';
$$post_dsp = '';
$set_days = 7;//NEWを表示日数
$set_days = $set_days . day;//NEWを表示日数+単位
$set_dsp_days = 30 ;//記事を表示日数
$today = date('Y/m/d');//今日の日付を取得
$limit_set_days = date("Y/m/d", strtotime($set_days, strtotime( date( $post_date ) )));//投稿日+$set_days
//更新の表示プログラム
//$modified_post = '';
$post_dsp = '';
$set_modified_days = 7;//を表示日数
$set_modified_days = $set_modified_days . day;//NEWを表示日数+単位
$set_modified_dsp_days = 30 ;//記事を表示日数
$limit_modified_set_days = date("Y/m/d", strtotime($set_modified_days, strtotime( date( $post_modified ) )));//投稿日+$set_days
//セットした日数より新しければ新着マークを表示
if( $limit_set_days > $today ) :
$post_dsp ='<span>new</span>';
elseif( $limit_modified_set_days > $today ) :
$post_dsp ='<span>更新</span>';
endif;
?>
<li>
<article itemscope="itemscope" itemtype="http://schema.org/Article" title="<?php echo $title; ?>">
<meta itemprop="description" content="<?php echo $post_text; ?>" />
<link itemprop="author" href="<?php echo $domain; ?>" />
<time datetime="<?php echo get_post_time('Y-m-j') ?>">
<?php echo get_post_time('Y-m-j') ?>
</time>
<h1 itemprop="name">
<a itemprop="url" href="<?php echo $post_link; ?>"><?php echo $title; ?></a><?php if($post_dsp) : echo $post_dsp . PHP_EOL; endif; ?>
</h1>
</article>
</li>
<?php
//END 記事
endforeach;//繰返し終了
echo '</ul>'.PHP_EOL;
wp_reset_postdata(); //クエリのリセット
endif;
endif;//have_posts( $args )
?>
<?php the_title(); ?>
これを、
<?php echo get_the_title($post->ID); ?>
こうしてみてはどうでしょうか。
>> mura0403さん
度々詳しい詳細をありがとうございます!
こちらのコードを貼り付けてみましたが、やはり上手く動作しませんでした。
わざわざ書いていただきまして、誠に感謝しております。
また当方のような無知に色々アドバイスをしていただき、重ねてお礼申し上げます。
>> x743さん
この変更で解決しました!
希望していた「新着情報」のみをピックアップして出力する事ができました!
本当にありがとうございます^^
*****
この度は私のような無知な人間のお願いを聞いて下さり、誠にありがとうございました。
コメントを下さった皆様に、多大なる感謝を申し上げます。
これにてフォーラムを「解決済み」とさせていただきます。
tomo_chocomint