独自ギャラリーショートコードによる不具合

0
いいねをした人: 居ません
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #2327
    Katsushi Kawamori
    参加者
    0

    私のプラグインで検証したのですが、多分他にもあてはまると思います。
    独自のギャラリーショートコード使いたい時に、コアファイルwp-includes/media.phpの、

    function gallery_shortcode( $attr ) {
    }

    をコピペして、カスタマイズして使いますが、そのファイルの1660行にある、
    $output = apply_filters( 'post_gallery', '', $attr, $instance );
    のところでエラーが出ます。
    私のプラグイン https://wordpress.org/plugins/simple-masonry-gallery/ で検証しました。

    Fatal error: Uncaught ArgumentCountError: Too few arguments to function Inc2734\WP_Pure_CSS_Gallery\Pure_CSS_Gallery::_post_gallery(), 2 passed in /home/riverforest/www/wordpress/wp-includes/class-wp-hook.php on line 286 and exactly 3 expected in /home/riverforest/www/wordpress/wp-content/themes/snow-monkey/vendor/inc2734/wp-pure-css-gallery/src/Pure_CSS_Gallery.php:29 Stack trace: #0 /home/riverforest/www/wordpress/wp-includes/class-wp-hook.php(286): Inc2734\WP_Pure_CSS_Gallery\Pure_CSS_Gallery->_post_gallery('', Array) #1 /home/riverforest/www/wordpress/wp-includes/plugin.php(203): WP_Hook->apply_filters('', Array) #2 /home/riverforest/www/wordpress/wp-content/plugins/simple-masonry-gallery/lib/SimpleMasonry.php(156): apply_filters('post_gallery', '', Array) #3 /home/riverforest/www/wordpress/wp-includes/shortcodes.php(319): SimpleMasonry->simplemasonry_gallery_shortcode(Array, '', 'gallery') #4 [internal function]: do_shortcode_tag(Array) #5 /home/riverforest/www/wordpress/wp-includes/shortcodes.php(197): preg_replace_ in /home/riverforest/www/wordpress/wp-content/themes/snow-monkey/vendor/inc2734/wp-pure-css-gallery/src/Pure_CSS_Gallery.php on line 29

    他のテーマ “Storfront”,”Twenty Seventeen” では、エラーは出ません。
    そこで、そことその後ろの3行

    $output = apply_filters( 'post_gallery', '', $attr );
    if ( $output != '' )
    	return $output;

    を削除したら、エラーは出ずに動いたのですが、今度は、上記のプラグインと連携する私のプラグインが https://wordpress.org/plugins/boxers-and-swipers/ 動かなくなりました。
    このプラグインはadd_filter( 'post_gallery'で、ギャラリーを呼び出しています。
    他のテーマ “Storfront”,”Twenty Seventeen” も、3行を削除したら https://wordpress.org/plugins/boxers-and-swipers/ が動かなくなりました。

    以上、報告まで。

    0
    いいねをした人: 居ません
    #2332
    アバター画像キタジマ タカシ
    参加者
    2421

    コアの post_gallery フックは引数を3つとります。

    Snow Monkey もギャラリーを独自実装しているのですが、post_gallery が引数を3つとる前提でコードを組んでいます。

    /simple-masonry-gallery/lib/SimpleMasonry.php 内では、apply_filters( 'post_gallery', ... ) が定義されていますが、これは引数を2つしかとらないようで、そのため Snow Monkey が3つめを使おうとするときに Fatal Error となってしまうようです。/simple-masonry-gallery/lib/SimpleMasonry.php のほうもコアと同じく引数を3つとっていただくようにすれば解決するかなと思うのですがどうでしょうか?

    Snow Monkey 側も、プラグインで post_gallery にフックしてるものがあるときはそちらを優先して独自ギャラリーは使用しない、とかはしたほうが良いかもですね〜。

    0
    いいねをした人: 居ません
    #2345
    Katsushi Kawamori
    参加者
    0

    おっしゃる通りでした。エラーは出なくなりました。
    私のコードが古かったようです。
    1652行に、* @since 4.2.0 The $instance parameter was added.とありました。
    それ以前のコードを使用していました。他にも変更されている所がありました。コアの写しを使用している場合は、アップデートのためにみてやらないとまずいですね。
    以外とメジャーなカスタマイズなので、私の様に、そのパラメーターの追加を知らずに使用しているプラグインが多数あるような気がします。

    エラーは出なくなりましたが、SnowMonkey では上手く動作しないようです。
    子テーマを作り、子テーマのfunctions.php に以下を追加しましたが、上手くいきませんでした。
    remove_filter( 'post_gallery', 'Inc2734\WP_Pure_CSS_Gallery\_post_gallery', 999 );

    0
    いいねをした人: 居ません
    #2347
    Katsushi Kawamori
    参加者
    0

    snow-monkey/vendor/inc2734/wp-pure-css-gallery/src/Pure_CSS_Gallery の、
    13行目 add_filter( 'post_gallery', array( $this, '_post_gallery' ), 10, 3 ); を、
    コメントアウトする事で対処しました。
    ‘functions.php’で、remove_filterで除去できるか、他の方法での対策をしていただけるとありがたいです。
     

    0
    いいねをした人: 居ません
    #2349
    アバター画像キタジマ タカシ
    参加者
    2421

    remove_filter、クラスや無名関数を使っていると外すの難しいですよね。。
    Snow Monkey のギャラリー機能は、下記のファイルを、子テーマで空ファイルで上書きすることで無効化できます。

    has_filter という関数で post_gallery が Snow Monkey よりも前に使われているか確かめられそうなので、できそうなら Snow Monkey より前に使われている場合は Snow Monkey のギャラリー機能は有効化しない、というような仕組みにする方向で試してみます!

    0
    いいねをした人: 居ません
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「独自ギャラリーショートコードによる不具合」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。