Ändern von URLs im Roh-HTML-Block von Visual Composer
Lesezeit: 7 Minuten
Visual Composer speichert den rohen HTML-Block als Base64-codierte (und URL-codierte) Zeichenfolge in der Datenbank. Meine Website muss von http auf https umstellen und ich müsste die in diesen Roh-HTML-Blöcken verwendeten Asset-URLs ändern, damit sie mit https bereitgestellt werden. Offensichtlich funktioniert das Such-/Ersetzungstool von WordPress hier nicht.
Kennt jemand hierfür eine Lösung?
Eine einfache PHP-Abfrage kann die Aufgabe erledigen. Wählen Sie die Tabellen aus, die die Daten von VC enthalten, und führen Sie dann einen aus str_replace()dann erneut einfügen
# WordPress VisualComposer RawHtml Base64 data base mass Replacing
For developers only!
This is little script for mass changes in wordpress visual composer database.
You can change all domains, html code, scripts and etc, data that in base64 coded.
MAKE BACK-UP database table WP_POSTS!
All what you need, its take this in function.php at your theme folder.
Change sample data to yours needs.
Run url - your_site.com/replace_composer_html_raw_base64
If success - all data will be changed and you are happy now ;)
<?php
function replace_composer_html_raw_base64(){
if($_SERVER['REQUEST_URI'] == '/replace_composer_html_raw_base64'){
global $wpdb;
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
$response = $wpdb->get_results('SELECT ID,post_content FROM wp_posts WHERE post_type="page"',ARRAY_A);
$count = count($response);
$tag = 'vc_raw_js';//'vc_raw_js';//'vc_raw_html';//vc_raw_js
$pattern = '\['.$tag.'].*?\]';
foreach ($response as $post){
$matches="";
preg_match_all("https://stackoverflow.com/" . $pattern . '/s', $post['post_content'], $matches);
$content = replacedComposerHtmlRawString($matches[0],$tag);
if(!$content && count($content)<1){
continue;
}
foreach ($content as $key=>$item){
$post['post_content'] = str_replace($item['original'],$item['modified'],$post['post_content']);
}
//$post['post_content'] = replacedComposerRawFromTo();
$upd = array(// Update the post into the database
'ID' => $post['ID'],
'post_content' => $post['post_content'],
);
wp_update_post( $upd );
}
die('If no errors, all successful! =) ');
}
}
// String with shortcode tag, and different tag send, like vc_raw_html,vc_raw_js, etc.
function replacedComposerHtmlRawString($strings,$tag){
if(!is_array($strings)){
return false;
}
$return=array();
foreach ($strings as $key=>$string){
$return[$key]['original']= $string;
$string = str_replace('['.$tag.']','',$string);
$string = str_replace('[/'.$tag.']','',$string);
$string = base64_decode($string);
$string = rawurldecode($string);//If something is not working, try changing rawurldecode to urldecode, etc... dumped it =)
//place to replace decoded string
$string = replacedComposerRawFromTo($string);
//end place..
$string = rawurlencode($string);
$string = base64_encode($string);
$string = '['.$tag.']'.$string.'[/'.$tag.']';
$return[$key]['modified'] = $string;
}
return $return;
}
function replacedComposerRawFromTo($string,$fromTo=false){
//Changed from 'value' = > to 'value';
$fromTo=array(
//Sample data to change!
'http'=>'https',
'token123'=>'token321',
'<script>Hello World</script>'=>'<script>HI WORLD</script>',
);
foreach ($fromTo as $from=>$to){
$string = str_replace($from,$to,$string);
}
return $string;
}
add_action('init', 'replace_composer_html_raw_base64');
Gut gemacht. Wenn ich es das nächste Mal verwenden muss, werde ich zurückkommen und es ausprobieren. Danke
– Seher
9. Okt. 2018 um 18:59 Uhr
Der Vollständigkeit halber. Ihr Kommentar //If something not working, try change this rawurlencode to urlencode, etc... dumped it =) sollte sein rawurldecode Und urldecode bzw.
– frezq
25. Januar 2019 um 21:40 Uhr
Vielen Dank, Kumpel. Nur eine Erinnerung für andere Benutzer, nicht zu vergessen, diese Zeile entsprechend ihrem eigenen Bedarf zu ändern $tag = 'vc_raw_js';//'vc_raw_js';//'vc_raw_html';//vc_raw_js
– Yug Kapoor
8. März 2020 um 13:01 Uhr
Hallo, ich habe einen Block wie diesen: [vc_raw_html css=”.vc_custom_1587030205472{margin-top: 0px !important;margin-right: 0px !important;margin-bottom: 0px !important;margin-left: 0px !important;}”] Das Skript versteht es nicht. Ich denke, das liegt am CSS-Attribut und am {}. Wie kann ich den regulären Ausdruck bearbeiten, um ihn zu erstellen? Danke
Dies sollte die akzeptierte Antwort sein. Solider Fund. Sie müssen nur die URL-codierten Zeichenfolgen beim Suchen und Ersetzen verwenden (sowie ein normales, nicht codiertes Suchen und Ersetzen für alle Orte, die nicht VC sind), und schon sind Sie fertig! Danke!
– Samyer
1. Okt. 2020 um 20:10 Uhr
Vielen Dank. (%2F), war sehr knifflig (Es funktioniert) [ Save my Brain and Time ]
– Shahinul-Islam
3. Januar 2021 um 12:59
Ich muss sagen, ich habe viele Versuche unternommen, Ihren genauen Ratschlägen und Ihrem Screenshot zu folgen, und bei einem Probelauf werden 0 Instanzen gefunden (mehrere andere Plugins finden auch 0 Instanzen), wenn ich im WPbakery Visual Composer Builder-Tool deutlich erkennen kann, dass die alten URLs sind noch da. In diesem Fall befinden sie sich in einem „Raw HTML“-Block und es gibt mindestens 6 Fälle, die mir bekannt sind. Jeder?
– Benutzer3035649
16. August 2021 um 15:11 Uhr
Rajkumar Gour
Platzieren Sie den folgenden Code in der Datei „functions.php“ Ihres Themes
add_filter('the_content', 'chnage_http_to_https', 10);
function chnage_http_to_https($content){
return str_replace('http://example.com','https://example.com', $content);
}
Es wird Ihnen im Frontend helfen. Ändern Sie example.com in Ihren Site-Namen
Dies wird ersetzt JEDEN Instanz von ‘http://’ in BELIEBIG Beitrag, sei es eine URL zu einer anderen Website oder was auch immer. It will help you on the front end -> Erklären Sie zumindest Ihren Code, da dies möglicherweise die Website von OP beschädigt hätte, wenn Sie nicht genau wüssten, was er tut.
– ProEvilz
16. November 2017 um 12:56 Uhr
Sie können den Buchstaben Ihrer Website str_replace(‘ hinzufügen.deine Seite‘, ‘deine Seite‘, $content);
– Rajkumar Gour
16. November 2017 um 12:57 Uhr
Dies funktioniert nicht für Websites mit http://www und wenn OP eine Mischung aus hat http://www Und http:// dann wird das nicht 100%ig funktionieren.
– ProEvilz
16. November 2017 um 12:59 Uhr
Es handelt sich um einen Filter zum Ändern der Inhaltsausgabe. Es wird nichts in Ihrer Datenbank bewirken.
– Rajkumar Gour
16. November 2017 um 13:00 Uhr
Danke, aber Visual Composer-Elemente lösen das normalerweise nicht aus the_content Haken. Schnell getestet und es funktioniert nicht mit dem rohen HTML-Element
Bitte lesen Sie die Frage noch einmal. Dies ist ein gutes Plugin, ersetzt jedoch nichts in der codierten Zeichenfolge, die von Visual Composer gespeichert wird
– Seher
16. November 2017 um 20:11 Uhr
Bitte lesen Sie die Frage noch einmal. Dies ist ein gutes Plugin, ersetzt jedoch nichts in der codierten Zeichenfolge, die von Visual Composer gespeichert wird
– Seher
16. November 2017 um 20:11 Uhr
14510300cookie-checkÄndern von URLs im Roh-HTML-Block von Visual Composeryes
Eine einfache PHP-Abfrage kann die Aufgabe erledigen. Wählen Sie die Tabellen aus, die die Daten von VC enthalten, und führen Sie dann einen aus
str_replace()
dann erneut einfügen– ProEvilz
16. November 2017 um 12:48 Uhr