web-dev-qa-db-ja.com

カスタム機能からのショートコードの削除

私は自分のホームページとカテゴリページのカスタム抜粋を作成するために次の関数を使っているので、文字数でそれをすることができて、カスタム「もっと読む」を持つことができます。ただし、抜粋の中にキャプションのショートコードが表示されています。

例:

[caption id = "attachment_4656" align = "aligncenter" width = "450"]シャキッとした野菜のタコス[/ caption]夕食の作り方を決めようとすると、時に圧倒されますか?家族のディナープランニングの専門家として私の長年から学んだこと...続きを読む

実際のショートコードコードを削除するために5行目を追加しようとしましたが、うまくいきません。

私は正しい軌道に乗っていますか?私はショートコードはまったく表示しないことを望み、私は 'ネット上で見た機能を使いましたが、うまくいきません(私はカスタムの抜粋機能を使っているのではないかと思います)。誰かが私を助けたいですか?

function get_excerpt($count){
   $permalink = get_permalink($post->ID);
   $excerpt = get_the_content();
   $excerpt = strip_tags($excerpt);
   $excerpt = str_replace(']]>', ']]>', $excerpt);
   $excerpt = substr($excerpt, 0, $count);
   $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
   $excerpt = $excerpt.' ... <a href="'.$permalink.'" class="read-more">continue reading <i class="foundicon-right-arrow"></i></a>';
   return $excerpt;
}

私がこれから変換しようとした5行目:

$content = str_replace(']]>', ']]>', $content);

TIA!

1

カスタム関数を使わないでください。あなたはフックを使うべきです。あなたはショートコードを取り除く必要はありません、wordpressはあなたのために自動的にそれをします、ちょうどこのようなものを使う

// setting higher priority so that wordpress default filter have already applied
add_filter('the_excerpt', 'custom_excerpt_filter', 11);
function custom_excerpt_filter($excerpt) {
    // apply your logic of read more link here
    return $excerpt . 'Custom Read More Text';
}

add_filter('excerpt_length', 'custom_excerpt_length');
function custom_excerpt_length($length) {
    return 30; // replace this with the character count you want
}

THUMBのルール

利用可能なフックまたはコア関数がある何かのためにカスタム関数をこれまでに作成しないでください

2
Mridul Aggarwal

strip_shortcodes( $excerpt )を使って…さて…ショートコードを取り除きます。 :) strip_tags()を呼び出す前に、早くしてください。

<?php
/** Plugin Name: (#69848) Strip shortcodes from the excerpt */
function wpse69848_noshortcode_excerpt( $excerpt )
{
    return strip_shortcodes( $excerpt );
}
add_filter( 'the_excerpt', 'wpse69848_noshortcode_excerpt' );
2
fuxia