• 解決済 tonbo101

    (@tonbo101)


    KTAI STYLEで携帯向けにサイト表示をさせており、使用しているWORDPRESSは、MU2.7.1です。

    サブドメインの子ブログをニュース投稿専用とし、メインブログに子ブログのニュースカテゴリーにある投稿記事を読み込みたいと考えています。

    ブログID4番のブログのカテゴリーID5番のカテゴリーの投稿から公開されているものを3件、という感じで読み込みたいのです。

    下記のソースを利用し、PCページでは表示できるようになったのですが、同じソースをKTAI STYLEのテンプレートに持ってくると、3行目でエラーになってしまい、表示することができません。KTAI STYLEのテンプレート内で投稿記事を読み出すには、PCページで使えるコードではダメなのでしょうか?
    どのようにしたら呼び出せるか、ヒントだけでもアドバイスいただけませんでしょうか。
    よろしくお願いします。
    ————————–
    <div id=”new-entries”>
    <?php
    $wpdb->set_blog_id(4);
    query_posts(“cat=5&showposts=3&post_status=publish”);
    ?>
    <?php if (have_posts()) : while(have_posts()) : the_post();?>
    <div class=”new-entry-bd”>
    <h4>guid;?>”><?=$post->post_title;?></h4>
    <?php if (trim(strip_tags($post->post_content)) != ”) :?>
    <p><?php echo mb_substr(strip_tags($post->post_content), 0, 100);?> […]</p>
    <?php endif;?>
    <p class=”update”><?php echo date(‘Y年n月j日’, strtotime($post->post_date));?></p>
    </div>
    <?php endwhile; endif;?>
    </div>
    ————————–

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    3行目でエラーになってしまい、

    その3行目には $wpdb がありますが、これをグローバル宣言してないからじゃないでしょうか。もし「 Call to a member function set_blog_id() on a non-object….」とかのエラーであれば、それが理由です。2行目と3行目の間に
    global $wpdb;
    を入れてみてください。

    PC のテンプレートの場合、偶然どこかで $wpdb のグローバル宣言がされていたのでしょう。

    <p><?php echo mb_substr(strip_tags($post->post_content), 0, 100);?> [...]</p>

    これだと the_content フィルターを通してないため、ショートコードが含まれている場合など、それが反映されないので、いまいちです。PC の場合は get_the_excerpt() の結果を 100 文字で切った方がよいです。Ktai Style 1.60 以降ならば、ks_excerpt(100); で100バイトで切ることが可能です。

    <p class="update"><?php echo date('Y年n月j日', strtotime($post->post_date));?></p>

    これも、単純に <?php the_time('Y年n月j日);?> で済みます。

    トピック投稿者 tonbo101

    (@tonbo101)

    lilyfan様

    ありがとうございます。
    コードに変更を加えて、下記のようにし、defaultテーマのpage.phpに埋め込んでみたところ、
    —————
    <?php
    global $wpdb;
    $wpdb->set_blog_id(4);
    query_posts(‘cat=5&showposts=3&post_status=publish’);
    ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <p><?php the_content(); ?></p>
    <p><?php the_date(); ?></p>
    <?php endwhile; endif; ?>
    —————
    とりあえず、意図したように3件の子ブログのニュースが表示されるようになりました。

    ここで、2つできないことがあって、悩んでいます。
    1つめは、投稿へのリンクをつけたいのですが、そのコードがつけられません。
    そして2つめですが、
    例えば、page.phpに入れると、全体で下記のようなソースになったのですが、
    —————
    <?php ks_header();
    global $ks_settings;
    ?>
    <!–start paging–>
    <?php if (have_posts()) : the_post(); ?>
    <div<?php echo $ks_settings[‘h2_style’]; ?>><h2><?php the_title(); ?></h2></div>
    <?php ks_content(__(‘(more…)’)); ks_link_pages();
    ks_posts_nav_link(‘ | ‘, ‘<hr /><div align=”center”>’, ‘</div>’);
    else: ?>
    <h2><?php _e(‘Not Found’, ‘ktai_style’); ?></h2>
    <p><?php _e(‘Sorry, no posts matched your criteria.’); ?></p>
    <?php endif; ?>
    <?php ks_footer(); ?>

    <?php
    global $wpdb;
    $wpdb->set_blog_id(4);
    query_posts(‘cat=5&showposts=3&post_status=publish’);
    ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <p><?php the_content(); ?></p>
    <p><?php the_date(); ?></p>
    <?php endwhile; endif; ?>
    —————
    ここで、後半の子ブログの記事を読み込む部分を前に持っていこうとしたら、本来表示されるべき親ブログのページ記事が、表示されず、子ブログの先頭の1件の記事が表示されてしまいます。
    global $wpdb;
    $wpdb->set_blog_id(4);
    この部分を複製して、
    global $wpdb;
    $wpdb->set_blog_id(1);
    に変更して前においてみたりもしたのですが、だめでした(><;)

    このページでは、GOOGLEの地図と子ブログのニュース3件を表示させて固定ページにしようと思っているのですが、ニュースは地図の表示よりも前に表示させたいのです。。。
    けれど、ソースの順番を入れ替えると地図が消えてしまいました・・・

    何か良い方法はないでしょうか?(T_T)

    >ks_excerpt(100); で100バイトで切ることが可能です
    ありがとうございます!やってみます!!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「KTAI_STYLEとWORDPRESSのタグについて」には新たに返信することはできません。