我正在更新Wordpress网站。它使用短代码生成youtube嵌入视频,但这不再需要了。我是前端开发者,我想在触摸数据库之前要小心。如何使用MySQL搜索和替换进行转换:
[sc:youtube id="abcdefghijk"]
其中abcdefghijk
是youtube视频ID。我想把它转换成这样的标准嵌入代码:
<iframe width="775" height="436" src="http://www.youtube.com/embed/abcdefghijk?rel=0" frameborder="0" allowfullscreen></iframe>
唯一真正需要继承的是id。
答案 0 :(得分:0)
我不知道如何使用Wordpress,但MySQL声明如下。假设该表名为meta_data,列为meta_key,meta_value,其中meta_key将包含youtube,meta_value将具有abcdefghijk。将列名和表名更改为真实信息。
UPDATE
`meta_data`
SET
`meta_value` = CONCAT('<iframe width="775" height="436" src="http://www.youtube.com/embed/', meta_value, '?rel=0" frameborder="0" allowfullscreen></iframe>')
WHERE
`meta_key` = 'youtube'
答案 1 :(得分:0)
非常有趣的问题。但我担心这不能用MySQL使用REPLACE或REGEXP语法来完成。所以我写了一个小的wordpress插件,用于正则表达式搜索和替换帖子。在使用插件之前,请确保备份wp_posts
表。
CREATE TABLE wp_posts_temp LIKE wp_posts;
INSERT INTO wp_posts_temp SELECT * FROM wp_posts;
插件代码
将此代码放入wp-content / plugins / replace-in-posts /文件夹中的replace.php文件中,然后激活该插件。
<?php
/*
Plugin Name: Replace in posts
Author: Danijel
*/
add_action('admin_menu', 'replace_in_posts_menu');
function replace_in_posts_menu() {
add_options_page("Replace in posts", "Replace in posts", 'manage_options', "replace_in_posts", "replace_in_posts_admin");
}
function replace_in_posts_admin() {
if ( !empty($_POST['pattern']) && isset($_POST['replacement']) ) {
$pattern = stripslashes_deep( $_POST['pattern'] );
$replacement = stripslashes_deep( $_POST['replacement'] );
$count = replace_in_posts( '/'.$pattern.'/', $replacement );
}
?><div id="icon-options-general" class="icon32"></div><h2><?php echo 'Replace in posts' ?></h2>
<div class="wrap"><form method="post" action="<?php echo admin_url()."admin.php?page=".$_GET["page"] ?>">
Pattern (without delimiter) : <input type="text" name="pattern" value="">
Replacement: <input type="text" name="replacement" value="">
<input class="button-primary" type="submit" value="Replace" >
</form><?php if (isset($pattern)) : ?><p>Pattern "<?php echo $pattern; ?>" replaced in <?php echo ( $count ? $count : '0' ); ?> posts</p><?php endif; ?></div><?php
}
function replace_in_posts( $pattern, $replacement ) {
$myposts = get_posts('numberposts=-1');
$count = 0;
foreach ( $myposts as $post ) {
if ( preg_match( $pattern, $post->post_content ) ) {
$post->post_content = preg_replace( $pattern, $replacement, $post->post_content );
wp_update_post( $post );
$count++;
}
}
return $count;
}
?>
正则表达式模式和替换您的问题:
\[sc:youtube id="(\w+?)"\]
<iframe width="775" height="436" src="http://www.youtube.com/embed/$1?rel=0" frameborder="0" allowfullscreen></iframe>
插件已经在该模式上进行了测试,并且没有错误。