web-dev-qa-db-ja.com

Functions.phpでプラグインを上書きします

add_action('wp_head','add_gpp_gallery');
function add_gpp_gallery() {
    if( ( is_single() || is_page() ) && ( !is_page_template('page-blog.php') ) ){
        remove_shortcode('gallery', 'gallery_shortcode');
        add_shortcode('gallery', 'gpp_gallery_shortcode');
    }
}

こんにちはすべて、私はプラグインのコア関数ファイルから上記の関数を取り出し、私は私のカスタム投稿タイプのWPデフォルトギャラリーのみを置き換えるようにそれを変更したいと思っていました。そこで、上記のif文を次のように変更しました。

if (is_single() && is_post_type('post_type'){

だから私はそれを変更し、私のfunctions.phpにそれを入れた - しかし私は私がadd_gpp_galleryを再宣言することはできないことを述べるというエラーを得ています

プラグインコードに触れずにプラグインの機能をオーバーライドするにはどうすればよいですか?

ありがとう

_編集_

私は試した:

remove_action( 'wp_head', 'add_gpp_gallery' );
add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
    if ( is_single() && is_post_type('listings') ){
        remove_shortcode('gallery', 'gallery_shortcode');
        add_shortcode('gallery', 'gpp_gallery_shortcode');
    }
}

そして私は致命的なエラーを受け取ります -

致命的なエラー:269行目の/home/hostspro/public_html/movemaine.com/wp-content/themes/movemaine/functions.phpにある未定義の関数is_post_type()を呼び出してください

編集#2

私は自分の関数をクロスワイヤリングしていて、is_post_typeを変更するのを忘れていました。次のコードはうまくいっていて、助けてくれてありがとう

remove_action( 'wp_head', 'add_gpp_gallery' );
add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
    if ( is_single() && 'listings' == get_post_type() ) {
        remove_shortcode('gallery', 'gallery_shortcode');
        add_shortcode('gallery', 'gpp_gallery_shortcode');
    }
}
1
Jason

元のクローンとクローンの間の競合を避けるために、コールバックと宣言の両方での名前を変更add_gpp_gallery関数を実行できます。

このようなもの...

add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
    if ( is_single() && 'your_post_type' == get_post_type() ) ){
        remove_shortcode('gallery', 'gallery_shortcode');
        add_shortcode('gallery', 'gpp_gallery_shortcode');
    }
}

...あなたのために働くべきです。

おまけ:必要ならば remove_action() で元のプラグインアクションを削除できます。

3
Michal Mau