TCDテーマ

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テーマの本体で コンテンツを構成するモジュールにフックを仕掛けるしかありません。

フックを仕掛ける場所は・・・この記事の話と離れてしまうので別の場所で解説します。
スポンサードリンク

関連記事一覧