サポート » 使い方全般 » プラグインを使わずに人気記事ランキングを作りたい

  • wordpressを使用してブログを作成しています。
    プラグインを使用せずにランキング機能を作成したいのですが、うまくいきません。
    以下入力したコードですが、single.phpに入力した部分のどこかが引っかかっているようで、記事をクリックすると「このサイトで重大なエラーが発生しました。WordPress のトラブルシューティングについてはこちらをご覧ください。」と表示されてしまいます。
    single.phpのコードを消すと、当然ランキングは表示されませんが、エラーは表示されなくなります。

    お分かりの方がいらっしゃいましたら、お知恵をおかしください。

    ●functions.php

    // 記事のPVを取得
    function getPostViews($postID) {
    $count_key = ‘post_views_count’;
    $count = get_post_meta($postID, $count_key, true);
    if ($count==”) {
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, ‘0’);
    return “0 View”;
    }
    return $count.’ Views’;
    }

    // 記事のPVをカウントする
    function setPostViews($postID) {
    $count_key = ‘post_views_count’;
    $count = get_post_meta($postID, $count_key, true);
    if ($count==”) {
    $count = 0;
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, ‘0’);
    } else {
    $count++;
    update_post_meta($postID, $count_key, $count);
    }
    }
    remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);

    ●Single.php

      <?php
    if (!is_user_logged_in() && !is_robots()) {
    setPostViews(get_the_ID());
    }
       ?>

    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    ●wp_popular_post.php

    <div class=”wpp_parent”>
    <h2 class=”widget-title”>人気記事</h2>
    <?php
    $args = array(
    ‘post_type’ => ‘post’,
    ‘post_status’ => ‘publish’,
    ‘meta_key’ => ‘post_views_count’,
    ‘orderby’ => ‘meta_value_num’,
    ‘posts_per_page’ => 10,
    ‘order’=>’DESC’,
    );
    $the_view_query = new WP_Query( $args );
    if ($the_view_query->have_posts()):
    while($the_view_query->have_posts()): $the_view_query->the_post();
    ?>

    <!– サムネと記事をボックスで囲む –>
    <div class=”wpp_box”>

    <!– サムネイルを表示 –>
    <div class=”wpp_thumb”>
    “>
    <?php
    if ( has_post_thumbnail() ) {
    the_post_thumbnail( array( 128, 72 ),’post-thumbnail’);
    }else {
    echo ‘thumbnail‘;
    }
    ?>

    </div><!– wpp_thumb END –>

    <!– タイトルを表示 –>
    <div class=”wpp_title”>
    <p>
    ” title=”<?php the_title(); ?>”>
    <?php
    if(mb_strlen($post->post_title, ‘UTF-8’)>20){ // 文字数制限
    $title= mb_substr($post->post_title, 0, 20, ‘UTF-8′);
    echo $title.’…’;
    }else{
    echo $post->post_title;
    }
    ?>

    </p>

    <!– スマホやタブレットではアクセス数を非表示 –>
    <?php if ( !is_mobile() ) : ?>
    <p class=”wpp_pv”><?php echo getPostViews($post->ID); ?></p>
    <?php endif; ?>

    </div><!– wpp_title END –>
    </div><!– wpp_box END –>
    <?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
    </div><!– wpp_parent END –>

    ●sidebar.php

    <?php get_template_part( “wp_popular_post” ); ?>

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • kimipooh

    (@kimipooh)

    パット見た感じでは

    if ($count==”) {

    の文字列が空という判定部分がダブルクォーテーションが1つで文法間違いになっています。

    if ($count=="") {
    あるいは
    if (empty($count)) {
    あたりを使ってみてはと思います。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • このトピックに返信するにはログインが必要です。