TCD テーマの専用ページの取得方法
TCDのテーマは、きれいで使いやすいのでよく使っています。
というか、TCDのテーマしか使っていませんwww
TCDのテーマには、テーマごとに専用のページを持っています。
使う分にはいいんですけど、サイトをリニューアルするときこれが問題になるんです。
TCDのテーマの専用ページで作ったデータは他のテーマに移動できない。
これ、ほぼ致命傷。
なので、とりあえず、TCD テーマの専用ページの取得するモジュールを書いておきます。
0001 $args = array(
0002 'post_type' => 'event',
0003 'post_status' => 'publish',
0004 );
0005
0006 // クエリの定義
0007 $wp_query = new WP_Query( $args );
0008 // ループ
0009 if ( $wp_query->have_posts() ) {
0010 mw_wp_form_yHook_tracesub("---loop---");
0011
0012 while ( $wp_query->have_posts() ) {
0013 $wp_query->the_post();
0014 // 処理を記述
0015 $post_id = get_the_ID();
0016 echo "post id=".$post_id.'
0017 ';
0018 echo " title=".get_the_title().'
0019 ';
0020 }
0021 }
0022 // 投稿データのリセット
0023 wp_reset_postdata();
0024
TCD テーマの専用ページの取得方法
ポイントは、args の post_type です。通常ワードプレスの post_type は、post,page,リビジョン・・・の5つといわれています。
TCDのテーマの専用ページは、このページタイプを使ってページを作っています。
その結果、通常のバックアップでは拾えないデータができてしまっている。
カスタマイズ(基本TCDでは触るなよと言ってる)やプラグインなどで専用ページが引っかかってこないのはこれが原因です。
TCD テーマの専用ページの page type の取得
ナビにカーソルを当てて表示されるURLの post type で拾います。
TCDテーマの専用ページのループサンプル
専用ページによっては、タグとか使えたりする。そのタグはどうやって抜き出すんだ?ってときは、以下を参照のこと。
つまり、
$event_tags = get_the_terms( $post->ID, ‘event_tag’ );
で、タクソノミー に保存してあるんですわ。
$event_tags[0]->name こんな感じで表示してますでしょ?
$event_tagsは、基本配列なので全部取り出したければ foreach を使えばいいってことなんでした。
0001 $event_args = array(
0002 'post_type' => 'event',
0003 'post_status' => 'publish',
0004 'posts_per_page' => $dp_options['index_event_num'],
0005 'orderby' => 'meta_value',
0006 'order' => 'ASC',
0007 'meta_query' => array(
0008 array(
0009 'key' => 'event_date',
0010 'value' => date_i18n( 'Y-m-d' ),
0011 'type' => 'DATE',
0012 'compare' => '>='
0013 )
0014 )
0015 );
0016 $event_query = new WP_Query( $event_args );
0017 if ( $event_query->have_posts() ) :
0018 while ( $event_query->have_posts() ) :
0019 $event_query->the_post();
0020 $event_tags = get_the_terms( $post->ID, 'event_tag' );
0021 $timestamp = strtotime( $post->event_date );
0022 if ( has_post_thumbnail() ) {
0023 the_post_thumbnail( 'size6' );
0024 } else {
0025 $vl ='';
0026 $vl.='<img src="' . get_template_directory_uri() ;
0027 $vl.='/assets/images/740x500.gif" alt="">' . "\n";
0028 echo $vl;
0029 }
0030
0031 echo esc_attr( $post->event_date );
0032 echo strtoupper( date_i18n( 'M', $timestamp ) );
0033 echo date_i18n( 'd', $timestamp );
0034 echo date_i18n( 'Y', $timestamp );
0035 $vl ='';
0036 $vl.='<a href=”<?php echo get_term_link( $event_tags[0] ); ?>"';
0037 $vl.='><?php echo esc_html( $event_tags[0]->name ); ?></a>';
0038 echo $vl;
0039 endwhile;
0040 wp_reset_postdata();
0041 endif;
そのほかのTCDテーマのデメリット
TCDテーマの専用ページもその通り、通常のループでは拾えません。同様にページビルダーを使った投稿、固定ページも記事本体を拾えません。
TCDのテーマのページビルダーで作った記事は、ポストコンテンツにはなく、別の場所に保管されています。
表示するときに記事を構成してそれを表示しています。
その結果、add_filter の ‘the_content’ では、記事全体を拾ったり、記事内に埋め込んだりとかできなくなっています。
この対策としては、TCDテーマの本体で コンテンツを構成するモジュールにフックを仕掛けるしかありません。
フックを仕掛ける場所は・・・この記事の話と離れてしまうので別の場所で解説します。