サポート » 使い方全般 » ショートコードが動作しない

  • 解決済 bitterfrog

    (@bitterfrog)


    バージョン2.5.1
    サーバー:chicappa!
    PHPのバージョン:ver.4.4.2

    ギャラリーページを作りたく、新規ページ作成で[gallery]や[kougabu」と書いて公開にしても、白紙のページが出来上がります。もちろん画像は10枚以上あります。
    テーマはwp-vicuna Ext.1.55です。
    何かこういうふうになる原因で考えられるものがあるでしょうか。

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

    (@lilyfan)

    ギャラリーページを作りたく、新規ページ作成で[gallery]や[kougabu」と書いて公開にしても、白紙のページが出来上がります。もちろん画像は10枚以上あります。

    そもそも、画像はメディアライブラリに登録されているでしょうか。
    gallery ショートコードは、その画像が属する投稿でのみ使えます。他の投稿やページの画像はひっぱってこれません。
    wp-kougabu の方はすべての画像が対象のようですが、メディアライブラリにないものは引っぱってこれません。あと、wp-kougabu はプラグインであって標準機能じゃないので、プラグインをインストールかつ有効にしないといけません。

    トピック投稿者 bitterfrog

    (@bitterfrog)

    お返事ありがとうございます。
    写真はメディアライブラリにすべて入っています。
    それと、wp-kougabuはプラグインを入れて、有効化もしてあります。
    それなのに、白紙ページになってしまうのです。
    wp-kougabuのほうは,
    There is no photograph in this page yet.
    と一行だけ出るのです。

    ギャラリーか、できたらwp-kougabuのほうはぜひ使いたいので、原因を探っているのですが。

    bitterfrog さん、こんにちは。 🙂

    wp-kougabu ですが、抽出条件に「ブログに投稿されていること(挿入されていること)」というのがありまして、もしかしてそれかな、、と思いました。

    もしそれでもだめでしたら、

    http://another.maple4ever.net/wp-content/uploads/etc/zip/wp-kougabu-20080625.zip

    このバージョンで試してみて結果を教えてください! 少し抽出条件を緩くしてみました。
    #確認していないのでばぐったらごめんなさい。。

    #lilyfanさんフォローいただきましてありがとうございます。

    トピック投稿者 bitterfrog

    (@bitterfrog)

    hiromasaさん、作者の方にお返事いただきありがとうございます。
    それに、新らしいバージョンまで!

    で、やってみたのですが、結果は同じでした……なぜ(涙)。
    せっかく新バージョンまで作っていただいたというのに、申し訳ないです。
    画像は、すべてブログに投稿もしてあるのですが。
    ギャラリーも使えないということは、hiromasaさんのwp-kougabuに問題があるのではなく、こちらの環境に問題があるのかもしれません。

    もし、他に何か思い当たる原因がありましたらお教えいただけるとありがたいです。

    bitterfrog さん、おはようございます。

    試していただきましてありがとうございます。 いえいえ、wp-kougabu の不具合です。
    どうやら、MySQL のバージョンにより動作が差異しているようです。

    bitterfrog さんのお使いの MySQL のバージョン分かりますでしょうか? 4.0 系はおそらくだめで、4.1 系は動作報告があるのですが、もしかするとマイナーバージョンによってはうまくないのかもしれません。

    実は以前、wp-kumonosu というプラグインでも同じように 4.1 系と 5 系で、SQL による抽出結果が差異して強引になおしたことがあったので、今回もそれと思います。

    時間がとれたらプログラム直してみたいと思いますので、よければ検証におつきあいください。 🙂

    トピック投稿者 bitterfrog

    (@bitterfrog)

    hiromasaさん、こんにちは。
    ありがとうございます。
    MySQL のバージョンを書いていませんでした。
    調べてみたら、4.0.26でした。
    まさに「おそらくだめ」なマイナーバージョンでした。

    最初にサーバー決める時に、phpやMySQLのバージョンもチェックすべきですね。
    もしお時間が取れたらでけっこうですので、よろしくお願いします。
    検証にはとことんお付き合いさせていただきます。

    bitterfrogさん、こんにちは。

    ありがとうございました。 4.0 でしたか~。

    WPのデータベースから画像を抽出するのに、MySQL に発行する SQL にサブクエリという2つのテーブルを同時に引く方法を使っているのですが、これが 4.0 で動作しないのが原因でした。

    ちょっと動作が遅くなるか、負荷が高くなるかするかもしれないのですが 4.0 用に1テーブルごとにひくようにプログラムをかいてみます。

    ちょっとただいま多忙なため、、気長にお待ちいただければと思います。 🙂

    #またここのトピックにポストします。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    wp-kougabu の SQL はパッと見ただけだったのですが、改めて確認してみました。これは、単純結合および自己結合による単文 SQL にできますね。

    SELECT
      p1.ID as ID
    , p1.post_title as post_title
    , p2.guid as guid
    , m.meta_value as meta_value
    FROM
      wp_posts as p1, wp_posts as p2, wp_postmeta as m
    WHERE
      p1.ID = p2.post_parent
      AND p1.post_parent = 0
      AND p2.ID = m.post_id
      AND p2.post_status = 'inherit'
      AND p2.post_mime_type like 'image%'
      AND m.meta_key = '_wp_attachment_metadata'
    ORDER BY
      p2.post_date DESC;

    これでどうでしょう?? 手元で確認した限りでは、同じ結果が得られて、時間は 1/9 ぐらいです。wp-kougabu に入れるならば、以下のコードを 160行〜187行の $query と入れ替えて使ってくらはい。

    $query =
    "SELECT
      p1.ID as ID
    , p1.post_title as post_title
    , p2.guid as guid
    , m.meta_value as meta_value
    FROM
      {$wpdb->posts} as p1,{$wpdb->posts} as p2, {$wpdb->postmeta} as m
    WHERE
      p1.ID = p2.post_parent
      AND p1.post_parent = 0
      AND p2.ID = m.post_id
      AND p2.post_status = 'inherit'
      AND p2.post_mime_type like 'image%'
      AND m.meta_key = '_wp_attachment_metadata'
    ORDER BY
      p2.post_date DESC";

    ミソは、wp_posts を 2 回 FROM 節に入れて、それぞれ p1, p2 とエイリアスするところですね。前者が投稿本体を抽出する用で、後者がアタッチメントを抽出する用で使います。

    >ミソは、wp_posts を 2 回 FROM 節に入れて、それぞれ p1, p2 とエイリアスするところですね。前者が投稿本体を抽出する用で、後者がアタッチメントを抽出する用で使います。

    あ、そか、にゃるほど。 完全に手続き型脳になっていました。(笑)
    ちょっとぼくも 4.0 が手元になくてためせないのですが、速くていいっすね!
    ありがとうございます。

    4.0 系の方の報告おまちしております~。
    よさそうなら・・・、ソースいただいていいっすか? さしかえます。:-) > lilyfanさん

    モデレーター IKEDA Yuriko

    (@lilyfan)

    あ、そか、にゃるほど。 完全に手続き型脳になっていました。(笑)

    多くの場合、サブクエリーは結合を使った単文クエリーに書き換えできます。このへんは MySQL レシビをいろいろ見てみるとよいでしょうか。

    よさそうなら・・・、ソースいただいていいっすか? さしかえます。:-) > lilyfanさん

    はい、元となったクエリーが GPL ですので、こちらも GPL で提供いたします。

    トピック投稿者 bitterfrog

    (@bitterfrog)

    hiromasaさん、lilyfanさん
    おはようございます。
    これは、私も上記の部分を取り替えて、やってみたほうがいいでしょうか?
    その場合、wp-kougabuは、hiromasaさんが作ってくださった新しいバージョンで試すほうがいいでしょうか?
    それとも、今のところ素人は見守っているほうがよろしいでしょうか?(^^:

    モデレーター IKEDA Yuriko

    (@lilyfan)

    これは、私も上記の部分を取り替えて、やってみたほうがいいでしょうか?

    はい、お願いします。もしそれで動作すれば、上記の SQL クエリーが wp-kumonosu のコードとして採用されることになるはずです。hiromasa さんのテスト版よりも上記 SQL の方が動作する可能性が大ですので、そちらは試さなくていいと思います 😉

    トピック投稿者 bitterfrog

    (@bitterfrog)

    できました!
    hiromasa様、lilyfan様、
    上記のようにしてみたら、wp-kougabuが動きました!
    ありがとうございます。

    ただ、これはちょっと別の問題なのかもしれませんが、3カラムにした時、
    ●●

    ●●

    と並んでしまいます。これが4カラムだと
    ●●●

    ●●●

    で、5カラムは
    ●●●
    ●●
    ●●●
    ●●
    なのです。ならば6カラムはどうだ、とやってみると
    ●●●●
    ●●
    ●●●●
    ●●
    なのです。これは、テーマとの相性なのでしょうか。ちなみにwp-vicuna Ext1.55です。
    (質問場所が違うようでしたら移動させていただきます)

    bitterfrog さん、こんにちは。

    動いて良かったです。 🙂
    カラム落ちの件ですが、とりあえず2カラムでやってみて OK であれば、入れ込む部分の幅の関係だと思います。 CSS の世界に入ってしまうのでちょっとあれですが、

    // internet explorer 7 hack.
    $itemwidth = $itemwidth - 1;

    プログラム中に上記の部分がありますが、ここが幅の制御を強引にしている部分で、 -1 を -4 とかにするとうまくいったりするかもしれません。

    また、そのもう少し下の部分に CSS の記述もあるので、がんばっていろいろ修正してみてください。 あと、テーマ自身の幅をかえるのも手かもしれません。 🙂

    # のちほど wp-kougabu の CVS にソースコミットさせていただきます! ありがとうございました。 > lilyfan さん

    トピック投稿者 bitterfrog

    (@bitterfrog)

    hiromasa様
    実は、2カラムでもカラム落ちしてしまっていました。
    1カラムにした時は、カラム内の(書き方がややこしくてすみません)センターにサムネイルが並び、
    2カラムにした時は、カラム内で左寄せになってサムネイルが並びました。

    で、テーマは1カラムで使用しており、幅は800pxぐらいあって充分かなと思われます。

    ご教示のように、$itemwidth = $itemwidth – 1;の値を変えてみましたが、数値を上げるとサムネイルが重なったりしてしまい、もとの-1に戻しました。

    現物を見ていただくのが一番かと思いますのでアドレス書いておきます。
    http://www.daikimakoto.net/days/image-list/
    こんな具合です。今は何だか並びもへんなことになっちゃってますが(´`;)

15件の返信を表示中 - 1 - 15件目 (全18件中)
  • トピック「ショートコードが動作しない」には新たに返信することはできません。