• 更新情報をトップページに表示したいのでexec-phpをプラグインしてphpコードをダッシュボードのページ/編集よりトップページを表示させるHTMLソース中に挿入させて更新情報を表示させれましたが、予期せぬ問題が起き、意図した形で更新情報を表示させられません。

    1つ目のPHPコードは

    <?php query_posts($query_string . ‘showposts=5&cat=1,3’); ?>
    <?php if (have_posts()) : ?>
    <dl>
    <?php while (have_posts()) : the_post(); ?>
    <dt><?php the_time(‘Y-m-d’) ?></dt>
    <dd>[ <?php the_category(‘, ‘) ?> ]
    “><?php the_title(); ?></dd>
    <?php endwhile; ?>
    </dl>
    <?php else : ?>
    <p>更新情報はありません</p>
    <?php endif; ?>
    <?php query_posts($query_string . “”); ?>

    を使いましたがそのままトップページ用のHTMLに挿入すると更新情報は表示できますが、その代りにトップページが幾重にも連結されて表示されてしまい画面が重くなります。
    以下の様な感じに。

    =================
    トップページ
    =================
    トップページ
    =================
    トップページ
    続く..

    なのでコードの最後の行の<?php query_posts($query_string . “”); ?>を外すと
    トップページの連結表示はなくなった替わりにトップページの下に更新情報の記事が
    連結されてしまいます。現在はその状態になっています。
    http://www.gw-gallery.com/

    なのでもう一つのPHPコードを
    <?php $myposts = get_posts(‘numberposts=5&category=77’); foreach($myposts as $post) : ?> <dd><span class=”day”><?php echo date(“Y年m月d日”, strtotime($post->post_date)); ?></span>” id=”post-<?php the_ID(); ?>”><?php the_title(); ?></dd>
    <?php endforeach; ?>
    を挿入してみると更新情報はcategory=の数字を変える事でトップページのタイトルが連なって表示されるか非表示のどちらかです。

    自身としてはトップページに更新情報を表示させたいだけです。

    どうか意図した形で更新情報を表示できる様にするにはどの様にすればよいでしょうか?
    ご教授宜しくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • ん~、まず、TOPページはページ用テンプレートを使用して作成するわけにはいきませんか?ページの内容が変わらない(記事の下に更新情報、かつその下には記事を書かない)構成であればTOPページ用のページ用テンプレートを作成して通常のループの下に固定で更新情報の表示を作ってしまえばよいと思います。

    なぜ、このような提案になるかといえば、exec-phpなどの記事中でphpを動かすことのできるプラグインを使用するとセキュリティが落ちると言われているからです。

    上記プラグインを使用しない方法で考えるとショートコードを作成するという選択肢もありますので、検討してみてください。

    トピック投稿者 OLIVELINE

    (@oliveline)

    ご回答どうもありがとうございます。
    ショートコードを試してみました。
    ショートコードを使えば自作で簡単にプラグインを作成して使えるんですね。

    しかしショートコードを使って表示させるテストを行いましたが今度は全角文字が文字化けします。
    ここでは更新情報を正常に表示できないという質問なのでショートコードの文字化けは改めて質問させて戴きます。

    トピック投稿者 OLIVELINE

    (@oliveline)

    ショートコードの文字化けはUTF-8 BOMナシで保存する事で解決できました。

    早速、更新情報で使用するコードを以下ショートコード
    <?php
    /*
    Plugin Name: kosin
    Plugin URI: http://www.gw-gallery.com/
    Description: Test
    Version: 1.0
    Author: Greenworks
    Author URI: http://www.gw-gallery.com/
    */

    function kosinDATA() {

    query_posts($query_string . ‘showposts=5&cat=4’);
    if (have_posts()) :
    while (have_posts()) : the_post();
    $data.=get_the_time(‘Y-m-d’).’ ‘.the_title(“”,””,false).’
    ‘;

    endwhile;
    endif;
    return $data;
    }
    add_shortcode(‘kosin’, ‘kosinDATA’);

    ?>
    を作成してページを表示させてみましたがページ下に記事が連なる問題は解決できませんでした。

    そしてTOPページ用のページ用テンプレートを作成する方法は、外部サイトから持ち込んだテンプレート「Atahualpa 3.4.9」の一式を利用しており、そのテンプレートのphpをみても複雑にプログラムが入り交ざっており構造を解読する事困難です。
    従ってphpに熟知していないのでその方法は自信ないです。

    もし解決方法がありましたら改めてアドバイス宜しくお願いします。

    を作成してページを表示させてみましたがページ下に記事が連なる問題は解決できませんでした。

    これは記事からショートコードを削除([kosin]を削除)すると元に戻りますか?戻るならばショートコードの問題。戻らないならテーマの問題になると思います。

    で、query_postscodexに「query_posts は WordPress ループ で表示される投稿を変更するために使います。」とあるとおり、ループ内に入れてしまうとループを変更してしまいます。もちろんループ内のショートコードで使用してもループを変更してしまうことになります。ですので、get_postsを使用したコードに作り変えることをお勧めします。

    トピック投稿者 OLIVELINE

    (@oliveline)

    ご回答ありがとうございます。

    ショートコードを削除すれば元通りになります。

    query_postsをget_postsに変更したら却って不味くなりました。
    スレの最初にも記述したトップページが下に幾つも連なるという現象になってしまいます。
    なので元々上述のコードの下部(return $data;の一行下あたり)にはquery_postsがあったのをその問題から外して表示させております。

    phpをもっと勉強しないと満足に扱えないですね。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「意図した形で更新情報をトップページに表示させられない」には新たに返信することはできません。