web-dev-qa-db-fra.com

Désactiver l'intégration automatique d'une URL youtube dans le contenu

Je lance un petit site basé sur wp avec un contenu généré par l'utilisateur. Les utilisateurs soumettent souvent des liens youtube. Et puis wordpress convertit automatiquement ces liens en vidéos, ce qui estindésirable dans notre cas. Je dois remplacer ce comportement automatique pour que les liens youtube soumis restent dans plain text urls?

J'ai découvert que je pouvais supprimer le fournisseur oembed lui-même avec quelque chose comme wp_oembed_remove_provider('http://www.youtube.com/oembed') mais je suis perplexe sur comment puis-je l'utiliser dans mon cas où $content est la chaîne qui contient l'URL ainsi que le contenu de la publication soumise? La page codex ne dit pas grand chose à ce sujet. Quelqu'un pourrait-il me donner un exemple de la façon dont cela peut être fait.

En d'autres termes, j'ai besoin de oEmbed pour ignorer tous les liens youtube contenus. Veuillez également me faire savoir s'il existe un moyen meilleur/plus efficace de résoudre ce problème.

1
gurung

désactivez le code ci-dessous dans functions.php:

remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );

Merci!

3
jas

La réponse acceptée n'a pas fonctionné dans mon cas. Les URL étaient toujours en train d'être converties pour être incorporées dans l'éditeur de publication.

En examinant la source de wp-includes/class-wp-embed.php où ces éléments sont gérés, j'ai constaté qu'il y a d'autres éléments en jeu ici:

// Hack to get the [embed] shortcode to run before wpautop()
add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 );

// Shortcode placeholder for strip_shortcodes()
add_shortcode( 'embed', '__return_false' );

// Attempts to embed all URLs in a post
add_filter( 'the_content', array( $this, 'autoembed' ), 8 );

// After a post is saved, cache oEmbed items via AJAX
add_action( 'edit_form_advanced', array( $this, 'maybe_run_ajax_cache' ) );

Ce qui a résolu le problème pour moi, c'est de les désactiver dans mes fichiers de thème de la manière suivante:

remove_shortcode( 'embed' );
remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'autoembed' ], 8 );
remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'run_shortcode' ], 8 );
remove_action( 'edit_form_advanced', [ $GLOBALS['wp_embed'], 'maybe_run_ajax_cache' ] );
5
Chris Montgomery