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

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

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

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

PHP

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

1444閲覧

「もっと記事を見る」の機能をカスタム投稿でも実装したい【WPテーマTCD:AMORE】

masa_oji

総合スコア8

WordPress

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

PHP

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/05/27 09:46

編集2021/06/01 08:05

状況

WPの有料テーマのカスタマイズで、TCDのAMOREを使用しています。
投稿一覧では「もっと記事を見る」で記事がさらに読み込まれるようになっています。
https://demo.tcd-theme.com/tcd028/?page_id=311

「work」というカスタム投稿タイプを追加しarchive.phpで一覧を表示させているのですが、
「work」の投稿一覧ページでこの「もっと記事を見る」をクリックすると、さらに現れる記事がデフォルトのpost(お知らせ)のものになっています。

該当コード

05/31現在、JSを条件分岐させて、functions.phpのactionをもう一つ作ることでworkの一覧ページでは解決することができました。
未だ、ターム一覧ページではPOSTのものが出てしまう状況です。

$cat_idの部分をtermに出来れば解決かと思うのですが、上手くいっておりません。

06/01、サポートに問い合わせたところ、カスタム投稿を想定した作りになっていないということでした。

引き続き、お力を貸していただければと思います。
よろしくおねがいします。

▼ 子テーマfunctions.php

php

1add_action( 'wp_ajax_nopriv_load-filter-work', 'prefix_load_cat_posts_work' ); 2add_action( 'wp_ajax_load-filter-work', 'prefix_load_cat_posts_work' ); 3function prefix_load_cat_posts_work () { 4 $cat_id = $_POST['term']; 5 $paged = $_POST['paged']; 6 7 $options = get_desing_plus_option(); 8 9 $search = array( 10 'post_type' => 'work', 11 'paged' => $paged, 12 'posts_per_page' => get_option('posts_per_page'), 13 'order' => 'DESC', 14 'post_status' => array('publish') 15 ); 16 17 if($cat_id) $search['term'] = $cat_id; 18 19 $posts = new WP_Query($search); 20 21 ob_start(); 22 23// echo "<div class='ajax-page-separator mb40'><span>PAGE $paged</span></div>"; 24 echo "<div class='row mb40' style='padding-right:15px'>"; 25 26 $imageFullWidth = true; 27 $x = 2; 28 $counter = -1; 29 if ( $posts->have_posts() ) : ?> 30 31 <?php while ( $posts->have_posts() ) : $posts->the_post(); 32 if($posts->current_post == 0 && 2 == 4){ continue; }; 33 $counter++; 34 if($counter==0 || $counter%3 !=0){}else{ echo '</div><div class="row mb40" style="padding-right:15px">'; }; 35 $x++; 36 if($x % 3) : ?> 37 <div style="display:none" class="fade-me-in col-sm-38 col-sm-offset-3"> 38 <div class="row"> 39 <article data-paged="<?php echo $paged + 1; ?>" id="post-<?php the_ID(); ?>" <?php post_class('paged'); ?>> 40 <div class='col-sm-120 col-xs-60' style='padding-right:0px'> 41 <a href="<?php the_permalink() ?>"><div class="thumb"><?php if ( has_post_thumbnail()) { the_post_thumbnail('size1'); } else { echo '<img src="'; bloginfo('template_url'); echo '/img/common/no_image2.gif" alt="" title="">'; }; ?></div></a> 42 </div> 43 <div class='col-sm-120 col-xs-60 mt10'> 44 <?php if ($options['show_date']) { echo "<span class='fa fa-clock-o'></span><span class='blog-list-timestamp romaji'>&nbsp;" . get_the_date('Y') . '.' . get_the_date('m') . '.' . get_post_time('j') . "</span> ";}; ?> 45 <?php if ($options['show_category']) { ?><span class="cate"><?php the_category(', '); ?></span><?php }; ?> 46 <h4 class='blog-list-title'><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> 47 <p class="blog-list-body"><a href="<?php the_permalink() ?>"><?php if(has_excerpt()){ the_excerpt(); }else{ new_excerpt(40); }; ?></a></p> 48 </div> 49 </article><!-- #post-## --> 50 </div> 51 </div> 52 <?php else : ?> 53 <div style="display:none" class="fade-me-in col-sm-38"> 54 <div class="row"> 55 <article data-paged="<?php echo $paged + 1; ?>" id="post-<?php the_ID(); ?>" <?php post_class('paged'); ?>> 56 <div class='col-sm-120 col-xs-60' style='padding-right:0px'> 57 <a href="<?php the_permalink() ?>"><div class="thumb"><?php if ( has_post_thumbnail()) { the_post_thumbnail('size1'); } else { echo '<img src="'; bloginfo('template_url'); echo '/img/common/no_image2.gif" alt="" title="">'; }; ?></div></a> 58 </div> 59 <div class='col-sm-120 col-xs-60 mt10'> 60 <?php if ($options['show_date']) { echo "<span class='fa fa-clock-o'></span><span class='blog-list-timestamp romaji'>&nbsp;" . get_the_date('Y') . '.' . get_the_date('m') . '.' . get_post_time('j') . "</span> ";}; ?> 61 <?php if ($options['show_category']) { ?><span class="cate"><?php the_category(', '); ?></span><?php }; ?> 62 <h4 class='blog-list-title'><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> 63 <p class="blog-list-body"><a href="<?php the_permalink() ?>"><?php if(has_excerpt()){ the_excerpt(); }else{ new_excerpt(40); }; ?></a></p> 64 </div> 65 </article><!-- #post-## --> 66 </div> 67 </div> 68 <?php endif ?> 69 <?php endwhile; wp_reset_query(); 70 endif; 71 echo "</div>"; 72 73 $response = ob_get_contents(); 74 ob_end_clean(); 75 76 echo $response; 77 die(1); 78} 79

▼ 子テーマfooter.php

JS

1<?php if(is_post_type_archive('work') || is_tax('cat_work') ) : ?> 2var canLoad = true 3 4function page_ajax_get_work(){ 5 var page = jQuery('.paged').last().attr('data-paged') || 2; 6 var cat = <?php echo $cat_id; ?>; 7 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>'; 8 9 canLoad = false 10 11 jQuery.ajax({ 12 type: 'POST', 13 url: ajaxurl, 14 data: {"action": "load-filter-work", 'term': cat, paged:page }, 15 success: function(response) { 16 if(response.length > 100){ 17 var id = page - 1; 18 id.toString(); 19 jQuery("#infiniscroll").html(jQuery("#infiniscroll").html() + response); 20 } else { 21 jQuery("#pagerlink").html("最終ページ") 22 jQuery("#pagerbutton").attr("disabled", "disabled") 23 } 24 25 setTimeout(function(){ canLoad = true }, 2000) 26 } 27 }) 28} 29 30<?php else : ?> 31var canLoad = true 32 33function page_ajax_get(){ 34 var page = jQuery('.paged').last().attr('data-paged') || 2; 35 var cat = <?php echo $cat_id; ?>; 36 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>'; 37 38 canLoad = false 39 40 jQuery.ajax({ 41 type: 'POST', 42 url: ajaxurl, 43 data: {"action": "load-filter", cat: cat, paged:page }, 44 success: function(response) { 45 if(response.length > 100){ 46 var id = page - 1; 47 id.toString(); 48 jQuery("#infiniscroll").html(jQuery("#infiniscroll").html() + response); 49 } else { 50 jQuery("#pagerlink").html("最終ページ") 51 jQuery("#pagerbutton").attr("disabled", "disabled") 52 } 53 54 setTimeout(function(){ canLoad = true }, 2000) 55 } 56 }) 57} 58<?php endif; ?> 59

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

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

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

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

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

CHERRY

2021/05/31 09:47 編集

質問に書かれた部分のコードを見る限りでは、子テーマで該当する function の置き換えは難しいと思いますので、対応する場合は、元々のテーマを書き換えることになると思われます。 また、質問の内容的( カスタム投稿のアーカイブに postが表示される ) は、テーマの不具合の可能性もあると思われますので、テーマの公式サポートに問い合わせて、テーマの不具合かを調べて頂いた方が良いと思います。 不具合であれば、公式にテーマを修正していただくのが良いと思われます。
masa_oji

2021/05/31 08:37

ありがとうございます。 現状を報告させていただきますと、条件分岐することでworkの一覧では表示することができました。 ただターム一覧ページではまだPOSTの内容が表示されてしまいます。 有料テーマがカスタム投稿に対応してないのか?という疑問もどこか持っていたので、 アドバイスいただいた通り、一度問い合わせてみます。 ありがとうございました!
yuki84web

2021/06/01 11:12

もっと見るをクリックした時に発行されるSQLを調べて、それを書き換えるとか?推測レベルなので具体的なコードを書けません。ご容赦ください
masa_oji

2021/06/02 01:24

回答ありがとうございます。 SQL、知識がないですが調べてやってみます!
guest

回答1

0

自己解決

すみません、ここに載せていないコードの部分でした。
footer.phpの頭に書かれている部分を条件追加したらできました。

▼ 親テーマfooter.php(元のコード)

php

1if(is_category()){ 2 $category = get_category( get_query_var( 'cat' ) ); 3 $cat_id = $category->cat_ID; 4}else{ 5 $cat_id= 'null'; 6} 7if( $cat_id ){ 8 $cat_id = $cat_id; 9} else { 10 $cat_id = 'null'; 11}

▼ 子テーマfooter.php(変更したコード)

php

1if(is_category()){ 2 $category = get_category( get_query_var( 'cat' ) ); 3 $cat_id = $category->cat_ID; 4}else{ 5 $cat_id= 'null'; 6} 7if( $cat_id ){ 8 $cat_id = $cat_id; 9} else { 10 $cat_id = 'null'; 11} 12if(is_tax() ){ 13 $cat_id = get_queried_object_id(); 14 15 if( $cat_id ){ 16 $cat_id = $cat_id; 17 } else { 18 $cat_id = 'null'; 19 } 20}

簡単にまとめると
01. footer.phpの$cat_idの部分で、タクソノミーの場合で条件分岐
02. footer.phpのfunction page_ajax_~の箇所を「タクソノミー」と「カスタム投稿」と「POST」で条件分岐
03. function.phpのadd_action( 'wp_ajax_load-filter~の部分を複製して、「タクソノミー」と「カスタム投稿」に合うように変更。
04. archive.phpの$cat_idの部分で、タクソノミーの場合で条件分岐
05. archive.phpの「もっと記事を見る」ボタンのonclick=""の中身をfooter.phpのfunctionに合わせて条件分岐

でいけました。(もっとシンプルにできるような気もします)
アドバイスいただいた方々、ありがとうございました!

投稿2021/06/02 02:06

masa_oji

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問