サポート » プラグイン » JetPackの「人気の投稿とページ」機能で画像を表示するようにしたい。

  • 解決済 hitsujisenpai

    (@hitsujisenpai)


    JetPackの「人気の投稿とページ」機能で画像が表示されません。
    画像が読み込まれず、ページに表示される画像のURLは
     http://i0.wp.com/ドメイン/wordpress/wp-content/uploads/2015/07/画像名
    のようになっています。
    画像サイズを200*200以上にする、画像名の日本語をやめるなどの対策は効果がありませんでした。

    そこでプラグインで画像のURLを取得している部分を改変しようと思い
    plugins→jetpack→modules→widgets→top-posts.php内の
    $image = Jetpack_PostImages::get_image( $post['post_id'], array( 'fallback_to_avatars' => true ) );
    の下に

    $addtmp = array();
    $addtmp = wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']),'post-thumbnail');
    $post['image'] = $addtmp[0];

    を追加したところwp_get_attachment_image_srcがないと言われます。
    この関数はwp-includes/media.phpにあるらしいので
    require_onceを使って

    $addtmp = array();
    require_once('./wordpress/wp-includes/media.php');
    $addtmp = wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']),'post-thumbnail');
    $post['image'] = $addtmp[0];

    のようにしましたがやはりwp_get_attachment_image_srcがないと言われます。

    media.php内のwp_get_attachment_image_srcの定義が
    function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon = false )
    で今回挿入したのが
    wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']),'post-thumbnail')
    ですので引数が足りない気がしたのでfalseを追加し

    $addtmp = array();
    require_once('./wordpress/wp-includes/media.php');
    $addtmp = wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']),'post-thumbnail',false);
    $post['image'] = $addtmp[0];

    のようにしましたがやはりwp_get_attachment_image_srcがないと言われます。
    ここで詰まってしまいました。
    どなたか解決方法をご存知ないでしょうか?

    以下は関係があるかどうか分からない情報ですが、
    ・Photonは使用していません。
    ・SQLite Integrationを利用しています。
    ・http://mikaduki.info/wp/826/を参考に改変を行いました。

    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • すみません
    全然JetPackではないのですが(プラグインあまり使ってないので)

    わたくしは、functionに書き込んでランキング出しています。

    1.次のソースをfunction.phpへ

    //アクセス数の取得(ファンクション)
    function get_post_views( $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 views";
        }
    
        return $count . '';
    }
    
    //アクセス数の保存
    function set_post_views( $postID ) {
        $count_key = 'post_views_count';
        $count     = get_post_meta( $postID, $count_key, true );
        if ( $count == '' ) {
            $count = 1;
            delete_post_meta( $postID, $count_key );
            add_post_meta( $postID, $count_key, '0' );
        } else {
            $count ++;
            update_post_meta( $postID, $count_key, $count );
        }
    }

    2.次にheader.phpなどに以下のソースを書き込む
    →これの設置でアクセス数を取得します。

    <?php set_post_views( get_the_ID() );//アクセス数を取得 ?>

    3.次のコードは実際にランキングを表示させたいところに設置します。

    <div>
      <h3 class="headline2">ランキング</h3>
      <ul>
    
      <?php
      $args = array(
      'numberposts' => 6,  //'posts_per_page' = 6> ,
      'post_type' 	=> array('post','page','カスタムポスト'), //投稿タイプの指定
      'meta_key'    => 'post_views_count',//ここでアクセスカウントを抽出
      'orderby'     => 'meta_value_num',//アクセス数の多い順
      'post_status' => 'publish',//公開した記事のみ
      'has_password' => false,//false or trueパスワードがかかってれば除外
      //'cat' => -1,//カテゴリーの設定
      );
      $customPosts = get_posts($args);
      foreach($customPosts as $post) : setup_postdata( $post );
      ?>
       <li>
        <a class="image" href="<?php the_permalink() ?>">
    	<?php if ( has_post_thumbnail()) { the_post_thumbnail('full'); } else { echo '<img src="'; bloginfo('template_url'); echo '/img/common/no_image1.gif" alt="" title="" />'; }; ?></a>
        <h4 class="title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
       </li>
      <?php endforeach; //表示の抽出終了 ?>
      <?php wp_reset_query(); //データリセット ?>
      </ul>
     </div>

    全然参考にならないかもしれませんが

    「3」のコードはサイドバーやフッターのどに書いとくと楽かもしれません。

    トピック投稿者 hitsujisenpai

    (@hitsujisenpai)

    mura0403 さま

    返信ありがとうございます!
    JetPackにこだわる訳でもないので、とても助かります!

    「3」のコードを
    外観>ウィジェット>テキスト(任意のテキストやHTML)
    からサイドバーに貼り付けたところ以下のように表示され、途中からコードがそのまま書き出されてしまうようです。(「>」以下がそのまま出力されている様子)
    何か書き換えるとうまくいくのでしょうか?

    タイトル
    
    ランキング
    
    6, //'posts_per_page' = 6> , 'post_type' => array('post','page','カスタムポスト'), //投稿タイプの指定 'meta_key' => 'post_views_count',//ここでアクセスカウントを抽出 'orderby' => 'meta_value_num',//アクセス数の多い順 'post_status' => 'publish',//公開した記事のみ 'has_password' => false,//false or trueパスワードがかかってれば除外 //'cat' => -1,//カテゴリーの設定 ); $customPosts = get_posts($args); foreach($customPosts as $post) : setup_postdata( $post ); ?>
    '; }; ?>

    PHPが入るとだめなので、ファイルをを作ってGETかインクルードで呼び出しすればいいと思いますよ。
    例えば、テーマフォルダ内に「widget-rank.php」を作り、3のコードを書き込む

    入れたいパーツ(例えばsidebar.phpなど)に

    <php include('sidebar.php'); ?>
    とすれば読み込みます。

    IF文と合わせれば、条件でインクルードするファイルを変更したりできて便利ですよ。

    トピック投稿者 hitsujisenpai

    (@hitsujisenpai)

    mura0403 さま

    おお!出来ました!
    見当違いなことをしてしまってたみたいで、すみません…
    おかげさまでイメージ通りの感じになりました。
    本当にありがとうございました!

    解決してよかったです。

    ちなみにですが、カテゴリー単位の集計は

    http://curation.nakamurayuji.com/archives/2982

    こちらの記事で紹介されています。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「JetPackの「人気の投稿とページ」機能で画像を表示するようにしたい。」には新たに返信することはできません。