web-dev-qa-db-fra.com

Ajouter du contenu par défaut à publier (pour une catégorie spécifique)

J'essaie d'ajouter du contenu par défaut à mes messages en utilisant ce code dans mon functions.php:

add_filter( 'default_content', 'my_editor_content' );
function my_editor_content( $content ) {
$content = "My html content.";
return $content;
}

Cela fonctionne bien, mais je voudrais ajouter le contenu à certaines catégories seulement. C'est délicat, car le contenu par défaut est ajouté lors de la création d'un nouveau message (c'est donc sans catégorie). J'ai suivi ce fil de discussion: Forcer le choix de la catégorie avant de créer un nouveau message? et l'auteur a proposé un moyen de vous forcer à choisir une catégorie avant que wp ne crée le nouveau message, mais je ne sais pas comment modifier le code de contenu par défaut, de sorte que cela ne s'applique qu'à certaines catégories?

2
speedypancake

default_content est exécuté lorsqu'une publication est chargée dans l'éditeur. Vous pouvez vérifier les catégories lorsque la publication est enregistrée, mais vous voudrez probablement le crochet save_post , probablement. Vous voulez vérifier le $_REQUEST global.

add_filter( 'default_content', 'my_editor_content' );
function my_editor_content( $content ) {
  global $_REQUEST;
  if (isset($_REQUEST['post_category']) && in_array($some_category_id,$_REQUEST['post_category'])) {
    $content = "My html content.";
  }
  return $content;
}

... en supposant qu'il n'y ait pas d'erreur de syntaxe. :)

Vous voudrez probablement aussi vérifier si le post_content est vide et ne l'insérer que s'il l'est.

1
s_ha_dum

1) Si vous voulez du texte par défaut dans POST EDITOR, utilisez la réponse de @ Milo .

2) Si vous souhaitez ajouter du contenu par défaut dans la sortie front-end de post, utilisez ce code (dans functions.php):

function add_before_content($content) { global $post;
  if ( 'page' == $post->post_type ) {return 'YOUR MESSAGE'.$content;}
  if ( 'post' == $post->post_type ) {return 'YOUR MESSAGE'.$content;}
  //etc..........
}
add_filter('the_content', add_before_content);
0
T.Todua

Vous pouvez utiliser le filtre the_content pour ajouter du contenu à une catégorie:

function my_category_content ( $content ) {
    global $post;
    if ( is_single() ) {
        if ( in_category( "My Category", $post->ID ) ) {
            $content .= 'Add something';
        }
        return $content;
    } 
} 
add_filter( 'the_content', 'my_category_content' );

Cet exemple n’affichera que le contenu ajouté sur des publications uniques.

0
Tomi Toivio