web-dev-qa-db-fra.com

Buddypress: éditer l'activité quand nouveau blog

J'essaie de modifier l'activité sur Buddypress (1.7 et en cours d'exécution Wordpress) pour la création d'un nouveau blog. Par défaut, il affiche l'extrait et toutes les images jointes, il supprime également le code (je pense).

Ce que j'essaie de faire, c'est de montrer l'intégralité du blog, y compris des galeries. Faire des recherches sur Internet et la documentation m'a amené à:

bp_activity_content_body() and bp_create_excerpt

L'aide de la communauté en ligne m'a amené à:

bp_activity_truncate_entry in bp-activity-filters.php

Mais je n'arrive pas à comprendre comment travailler les filtres (appliquer/ajouter). J'ai essayé ce qui suit (pour bp_activity_truncate_entry), mais aucun succès jusqu'à présent:

apply_filters ('bp_activity_excerpt_length', 500); 

Et le suivant pour bp_create_excerpt:

remove_filter( 'bp_create_excerpt', $length, $options ); 
function pnb_excerpt(){     $lenght = 500;  
$options = array(       'ending' => __( ' […]', 'buddypress' ),
 'exact'             => false,
  'html'              => false,
  'filter_shortcodes' => $filter_shortcodes_default); } 
add_filter( 'bp_create_excerpt', 'pnb_excerpt', $length, $options );

(Également essayé d'appliquer au lieu d'ajouter) Aucun d'entre eux semblent fonctionner. Mais encore une fois, je ne suis pas sûr de savoir comment travailler ces filtres. Quelqu'un peut-il me diriger dans la bonne direction?

2
MeRuud

Tout d’abord, une note sur le fonctionnement du filtre. Si un développeur souhaite filtrer/laisser filtrer les autres, il applique tous les filtres qu’il/d’autres ont sur lui en appelant apply_filters(). Si vous voulez filtrer quelque chose avec une certaine fonction, vous ajoutez votre fonction à ce crochet de filtrage avec add_filter(). Bien sûr, il n’est utile d’ajouter un filtre à un hook que si les filtres accrochés à ce hook doivent être appliqués quelque part. Dans ce cas, vous souhaitez rechercher quelque chose où BuddyPress applique des filtres au contenu du message et ajouter une fonction à ce raccord de filtre afin que vous puissiez le filtrer comme vous le souhaitez.

Comme vous allez afficher le message complet, vous devez filtrer le contenu lors de son affichage. BuddyPress applique le filtre 'bp_get_activity_content_body' au contenu de l'activité avant de l'afficher. Donc, vous voulez ajouter une fonction à ce filtre qui retournera le corps entier de la publication:

function my_bp_full_posts_in_activity_feed( $content, $activity ) {

     if ( 'new_blog_post' == $activity->type ) {

        $post = get_post( $activity->secondary_item_id );

        if ( 'post' == $post->post_type )
             $content = apply_filters( 'the_content', $post->post_content );
     }

     return $content;
}
add_filter( 'bp_get_activity_content_body', 'my_bp_full_posts_in_activity_feed', 10, 2 );
0
J.D.