web-dev-qa-db-ja.com

プラグインのショートコードのデフォルト値をどのように拡張しますか?

これはプラグインの公式サポートスレッドにより適していると思いますが、開発者はフォーラムを読んでいないようです。

私は私のサイトの周りにショートコードでボタンを追加するために Standout CSS3 Buttonsプラグイン を使用しています。ショートコードにはcssclassというオプションのパラメータがあり、これを使ってボタンのカスタムクラスを指定することができます。私のサイトはすでに.buttonクラスのルールを持っているGantryフレームワーク上に構築されているので、ショートコードで単にcssclass="button"を宣言してGantryのCSSにそれをカバーさせたいのです。残念ながら、私がそうするとき、プラグインはそれを認識していないようで、そしてページがロードされるとき、ボタンは.buttonクラスを持っていません。

cssclass="button"の代わりに、"button-pinterest""button-rss"のようにプラグインで定義されたクラスを指定した場合、ボタンはそのクラスと適切なスタイルを反映してきちんと更新されます。あたかもプラグインがカスタムクラスを削除しているように見えます - これはカスタムCSSクラスを提供するという非常に目的に反するようです。

サイドバーのこのページのプラグインによって生成されたボタン を見ることができます 。今のところ、.button-pinterestクラスを使用しています。代わりに.buttonクラスを使用したいのですが。

プラグインを見てショートコードで指定したクラスを追加する方法を見つけるためのPHPチョップはありません。親切にそれを見て私が私のカスタムクラスを追加するのを手伝ってくれる人はいますか?

2
SpencerDub

ショートコードをハイジャックして、独自の追加ロジックを使用することができます。

テストされていないサンプルコード

add_action( 'after_setup_theme', function()
{
    // Replace the plugin shortcode handler with your own.
    add_shortcode( 'standout-css3-button', function( $atts, $content = NULL )
    {
        // Let the plugin make the button and store the result.
        $button = scss3button( $atts, $content );

        // No custom class, stop.
        if ( empty ( $atts['cssclass'] ) )
            return $button;

        // Inject your own class, and add a white space as class separator.
        return str_replace(
            'class="',
            'class="' . $atts['cssclass'] . ' ',
            $button
        );
    });
});

ちなみに、私は自分のサイトでこのプラグインを使うことはありません。そのコードは私を悩ませます。あなたは本当にあなたのテーマに必要なボタンを実装することを検討し、より少なくより良いコードで逃げるべきです。

2
fuxia