i'm a beginner in Wordpress and i'm trying to remove all shortcodes from a post content from a database. I found the function created for wordpress named "strip_shortcodes()" but i don't really know how to use it. I looked on internet and i still don't know where is my error...
There is the code :
$all_pages = $wpdb->get_results (
"SELECT * FROM " . $post_table . " WHERE post_type = 'page' "
);
foreach ($all_pages as $page) {
echo '<h1>' . $page->post_title . '</h1>';
$content = $page->post_content;
echo strip_shortcodes($content) . PHP_EOL;
}
Result :
[spacer size="5"] [tabs style="1"] [tab title="Définition"] [heading border="#cf3549" color="#444444" style="1"]Qu'est-ce qu'un hébergement web ? [/heading] Il s'agit en fait de la location mensuelle (ou annuelle) d'un serveur, en d'autres termes la location d'une machine ressemblant vaguement à un PC dépouillé de son écran et sans système d'exploitation traditionnel comme Windows ou Mac. Les systèmes d'exploitation des serveurs sont généralement des logiciels libres comme Linux, nginx ou des logiciels payants comme Windows server. Le serveur web n'est que la partie matérielle (hardware), qu'il faut coupler à un système d'exploitation correspondant à ses compétences, c'est la partie logicielle (software).
Excepted result:
Qu'est-ce qu'un hébergement web ? Il s'agit en fait de la location mensuelle (ou annuelle) d'un serveur, en d'autres termes la location d'une machine ressemblant vaguement à un PC dépouillé de son écran et sans système d'exploitation traditionnel comme Windows ou Mac. Les systèmes d'exploitation des serveurs sont généralement des logiciels libres comme Linux, nginx ou des logiciels payants comme Windows server. Le serveur web n'est que la partie matérielle (hardware), qu'il faut coupler à un système d'exploitation correspondant à ses compétences, c'est la partie logicielle (software).
Can someone tell me what is the problem please ?
$content = preg_replace('#\[[^\]]+\]#', '',$page->post_content);
echo apply_filters('the_content', $content);
try this
Your code looks good but you are missing saving it in the database. What is the output of the echo? I would do it like this (untested):
$all_pages = $wpdb->get_results ( "SELECT * FROM " . $post_table . " WHERE post_type = 'page' " ); foreach ($all_pages as $key => $page) { $all_pages[$key]->post_content = strip_shortcodes($page->post_content); // Save the content to the database wp_update_post($all_pages[$key]); }
When viewing posts 'home' page, strip all shortcodes, but on other pages, such as single.php, do not strip the shortcodes.
function remove_shortcode_from_index( $content ) {
if ( is_home() ) {
$content = strip_shortcodes( $content );
}
return $content;
}
add_filter( 'the_content', 'remove_shortcode_from_index' );
Click here for more details : https://codex.wordpress.org/Function_Reference/strip_shortcodes and https://developer.wordpress.org/reference/functions/strip_shortcodes/
try this remove_shortcode() function may be its helpful.