it-swarm.com.de

stoppen Sie das Entfernen von Shortcodes in Kategorie- und Archivseiten

Unter Verwendung des Wordpress-Standardthemas 2010 1.1 funktionieren Shortcodes auf der Blog-Hauptseite und auf einzelnen Postseiten, werden jedoch auf Kategorie- und Archivseiten entfernt.

Halte dich zum Beispiel an die functions.php des Themas:

add_shortcode('tsc', 'tsc_process_shortcode' );

function tsc_process_shortcode($atts, $content = null) {
return 'INSERTED TEXT ' . $content;
}

INSERTED TEXT wird nicht aus [tsc] in Post-Inhalten generiert, die auf Kategorie- und Archivseiten angezeigt werden. Wie kann ich Shortcodes für Kategorieseiten und Archivseiten einrichten?

1
BigToe

Shortcodes werden aus dem Auszug entfernt, bevor Filter angewendet werden. Versuchen Sie etwas ähnlicheres:

function tsc_execute_shortcodes_in_excerpts( $text, $raw_text ){
  if(empty($raw_text)){
    $text = get_the_content('');
    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]>', $text);
    $text = strip_tags($text);
    $excerpt_length = apply_filters('excerpt_length', 55);
    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
    $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
    if ( count($words) > $excerpt_length ) {
      array_pop($words);
      $text = implode(' ', $words);
      $text = $text . $excerpt_more;
    } else {
      $text = implode(' ', $words);
    }
  }
  return $text;
}

add_filter( 'wp_trim_excerpt', 'tsc_execute_shortcodes_in_excerpts', 10, 2 );

Dies führt wp_trim_excerpt() für den Inhalt erneut aus (abzüglich Shortcode-Stripping), wenn er von Anfang an gekürzt wurde. Wenn Sie nur auf Ihren Shortcode abzielen möchten, können Sie nach get_the_content('') Folgendes tun:

$text = str_replace( '[tsc', '{tsc', $text );
$text = strip_shortcodes( $text );
$text = str_replace( '{tsc', '[tsc', $text );

Hoffentlich hilft das.

1
John P Bloch

Unter der Annahme, dass Sie die Standardeinstellung 2010 verwenden, verwenden die Archiv- und Kategorie-Schleifen den_Auszug anstelle des_Inhalts. Aus diesem Grund werden die Shortcodes nicht generiert. Glücklicherweise gibt es eine einfache Lösung dafür. Fügen Sie diese Zeile einfach zu Ihrer Datei themes functions.php hinzu

add_filter( 'the_excerpt', 'do_shortcode', 11 );

Hoffe das hilft.

1
Bainternet