サポート » 使い方全般 » 移設後のおかしな挙動について

  • 解決済 kazuyaogawa

    (@kazuyaogawa)


    初心者の質問ですがお分かりになる方お願い致します。

    近々、同サーバー内でのサブドメインからメインへのwordpressの移設があり、そのテストをしていた所、移設先に移すと、Aというページの月別アーカイブがうまく動かないという問題に陥りました。

    移設元では[カテゴリ別月別アーカイブ]として機能しているのですが、移設するとカテゴリを
    取得出来ていない感じになります。(マウスオーバー時のリンク先に「cat=○○」にIDが表示されない。移設元では問題なく表示されます。)

    念のため別サーバーにDBを作成し、同じデータをインポートした所こちらでも
    同じ症状になってしまいます。

    ここで一旦移設元へデータを戻した所、正常に動きます。

    ちなみにこのAというページは

    <?php
    /****************************************
    
    	Template Name:ブログ
    
    ブログのページテンプレート
    
    *****************************************/
    get_header(); ?>
    <?php get_sidebar('2'); ?>
    <div id="blog_container" class="container_12 clearfix">
    <h3>院長ブログ</h3>
    <?php query_posts('cat=-3,-8&posts_per_page=10&paged='.$paged); ?>
    <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); ?>
            <div class="post">
                <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
                 <p class="blog_date"><?php the_time("Y.m.j") ?></p>
                <div class="clear">
                <?php if(has_post_thumbnail()) { the_post_thumbnail(); } ?>
               <?php echo mb_substr(strip_tags($post-> post_content), 0, 100); ?>
    <a href="<?php the_permalink() ?>">&nbsp;&nbsp;...&nbsp;[続きを読む]</a>
            </div>
                </div>
        <?php endwhile; ?>
    <?php else : ?>
        <div class="post">
            <h4>記事が見つかりません</h4>
            <p>記事が存在しないときのテキスト</p>
        </div>
    <?php endif; ?>
    <?php get_template_part('pager'); ?>
    <?php wp_reset_query(); ?>

    という記述になっております。
    ここで読み込んでいる
    「sidebar-2」はこんな感じです。

    <div id="area_bnr" class="maB15">
    <div id="mothly_archives">
    <h2>ブログ月別アーカイブ</h2>
    <?php
    	$cat = get_the_category('1');
    	$cat =$cat[0];
    	$cat_ID = $cat->cat_ID;
     	wp_get_cat_archives('type=monthly', $cat_ID);
     ?>
    </div>

    移設元ではこれで正常に動いているのに、なぜか移設先に行くとおかしな挙動になるのは、
    移設のやり方自体に何か問題があるのでしょうか?

    移設しなければ正常に動くので、記述などの構築の問題ではないような気もします。

    移設参考サイトはこちらで、同じような状況での(同サーバー内での移設)別のサイトで試した所、このやり方で移設はスムーズに行なえました。

    ここ丸二日この状況から抜け出せずにいます。
    もし同じ様な症状になった方や原因がお分かりになる方。
    ご教授願えませんでしょうか?

    どうぞ宜しくお願い致します。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • wp_get_cat_archives はWordPress本体には含まれていないようですが、どのような関数ですか?

    こんにちは、

    get_footer() が記述されていませんが、書洩らしですか?

    echo mb_substr(strip_tags($post-> post_content), 0, 100);

    は、オーソドックスな、WordPress関数がおすすめです。

    <?php
    $count			 = 100;
    $more			 = '  ... ';
    $entry_content	 = remove_all_shortcodes( $post->post_content );
    echo wp_html_excerpt( $entry_content, $count, $more );
    ?>
    <a href="<?php the_permalink() ?>">[続きを読む]</a>

    wp_get_cat_archivesは、
    http://qiita.com/shuhei/items/c364c0ea129a06e9f71a

    ですか?

    だと仮定すると、
    サイドバーでループの外なので、

    get_the_category( $id );

    にする必要があるんじゃないかと思います。

    var_dump($cat_ID);

    してみてください。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    gblsmさま
    nobitaさま

    アドバイスありがとうございます。

    gblsmさま>関数はnobitaさまがあげて下さったものがまさしくです。
    その関数をfunctionに書いてます。

    nobitaさま>

    今回もアドバイスありがとうございます。
    get_footer()は記述を抜粋したので下部に記載は有ります。
    nobitaさんのアドバイスを実行してみたいと思います。
    少々お待ちください。
    ちなみに移設前には正常に動いているのに、移設後に上記の挙動になるのは
    記述の可能性もあるのでしょうか?

    個人的には移設の際に何かしら問題があるのかと踏んでおりました。。。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    ご報告です。

    get_the_category( $id );
    ですが試した所、NULLでした。

    ちなみに
    get_the_category();
    でもNULLです。

    念のためFTPソフトを違う物ですべてをアップし直した結果、
    カテゴリの取得ができました。。。
    うーむ。。。謎は深まるばかり。。

    FTPソフトによってバグ的なことはありえるもんなんでしょうか?
    不安定すぎです。
    ちなみにmacなのでcyberduckを使用していて、そちらで
    ダメでTrancemitにした所カテゴリの件は解決出来ました。

    そもそも、データを落とす時点でなにかあった可能性もありえるのでしょうか?

    移設の際には
    元サーバーからのデータはFTPでマルマル落として、移設先にFTPでマルマルアップするという部分に間違えはないでしょうか?

    色々申し訳ございません。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    さらにご報告いたします。

    しばらくは正常に
    var_dump($cat_ID);
    で取得できていたのですが、しばらくするとまたダメになりました。

    この間何度も更新やキャッシュのクリアはもちろんしています。

    やはり記述がおかしいからなるのでしょうか??

    それとも移設の際の問題でしょうか・・・

    いろいろ悩ましい事になっているなら、

    どうしても、カテゴリに絞ったリストが必要なら、プラグインを使ったほうが簡単ではないですか?

    https://wordpress.org/plugins/list-category-posts/

    単に月別アーカイブを表示するだけであれば、ウィジェットにデフォルトで入っていますし、

    テンプレートに記述したいなら、

    http://codex.wordpress.org/Function_Reference/the_widget

    で、出来ますよ

    なんでこの不具合が起きているのか?私の想像(あくまで想像)

    $cat = get_the_category('1');

    まず、この関数の意味は、投稿IDが 1 のカテゴリを取得する関数です。

    ローカルのテストサイトには、投稿ID 1 の記事が存在している。

    WEBにあるサイトには、投稿ID 1 の記事が存在しない。

    なので、cat=○○が空白になる。 ということなんじゃないかな、と思います。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    nobitaさん>

    カテゴリ別にしていないと行けないので、
    実はそのプラグインも試してた時期もあったのですが、そちらも
    巧くいかないので、記述するながれになっておりました。

    サーバーが見つかりませんでページがうつらないこともなぜか出てきました。
    カテゴリが取得出来たり、出来たりもする不安定な感じです。

    記述云々というより
    移設そのもののやり方も良くないんでしょうか・・

    もし、個別の投稿ページで、関連アーカイブの表示(カテゴリで紐づいたアーカイブリスト)を行いたくて、努力を重ねてきて、それを実現したいという事なら、

    現状のコードを見直して、その表示が可能なコードを書かないといけないです。

    $cat = get_the_category('1');

    この書き方では、どの投稿を表示したとしても、投稿ID 1 のカテゴリで絞り込むだけなので、関連投稿を表示できないので、’1’の部分に 投稿IDが正しくセットされるように頑張ってみるといいと思います。

    それと、細かい事ですが、後々コンフリクトしないように、wp_get_cat_archives()関数名も、wp_以外のプレフィックスにしたほうがいいでしょう。

    カテゴリが取得出来たり、出来たりもする不安定な感じです。

    自分がテストしている条件をきっちり絞ってテストしたほうがいいですよ。
    ループページと、シングルページ、投稿と ページとか、

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    nobitaさん>

    色々ありがとうございます。
    大変勉強になります。

    説明を不足ですみません。
    カテゴリID 1 のみのカテゴリしか、カテゴリ別月別アーカイブには
    必要がないものでそうしておりました。

    全体的に不安定な部分やユーザビリティを考えると、
    カテゴリに分けている物をそれぞれ、カスタム投稿で作る方がいいのかと
    思って平行して、そちらも進めております。

    カテゴリID 1 のみのカテゴリしか、カテゴリ別月別アーカイブには
    必要がないものでそうしておりました。

    という事でしたら、

    $cat = get_the_category('1');
    	$cat =$cat[0];
    	$cat_ID = $cat->cat_ID;

    等というコードは書かずに

    $cat_ID = 1;

    とかにすればいいと思います。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    >nobitaさん

    ご連絡遅くなり申し訳ございません。
    本日もありがとうございます。

    ‘$cat = get_the_category(‘1’);
    $cat =$cat[0];
    $cat_ID = $cat->cat_ID;’
    をnobitaさんの仰る通り書き換えた所、カテゴリ1の月別アーカイブを
    取得できております。

    本当にありがとうございます。

    にしてもなぜ移設元では大丈夫なのでしょうか??

    本番移設の際は記述を書き換えた物をアップしようと思います。

    WordPress をインストールしたとき、最初から “Hello world!” という投稿が入っていますね。その投稿IDは1番で、カテゴリID 1番のカテゴリに入っています。

    その “Hello world!” が移設元には(そのまま、またはゴミ箱に)残っていて、移設先ではゴミ箱にさえ残っていない状態なのでしょう。

    もしそうなら「投稿IDが1の投稿が属するカテゴリのIDを取得する」という誤った処理でも、移設元ではたまたまカテゴリID 1が得られ、移設先ではNULLとなった、ということではないでしょうか。

    トピック投稿者 kazuyaogawa

    (@kazuyaogawa)

    Kanjyさん>

    初めまして。コメントありがとうございます。
    そうだったのですね。確かにそれなら理屈が分かります。

    まだまだwordpressおよびPHPの初心者すぎて勉強足らずで
    申し訳ございません。

    アドバイスありがとうございます。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「移設後のおかしな挙動について」には新たに返信することはできません。