这是一个初级插件,未经测试。当插件被激活时,它将运行一次。
复制代码,使其成为名为__once.php
将文件保存在wp-content\\plugins\\__once\\
浏览wp-admin/plugins.php
, 并激活名为__once.WARNING: 它没有经过测试。建议您先进行测试,修复bug,以适合您的方式进行修复,然后使用它或构建您的程序。
<?php
/**
* Plugin name: __once
* Plugin URI: http://wordpress.stackexchange.com/a/204002/22728
* Description: A onetime minimal plugin to update all the postmeta from the content iframes.
*/
/**
* Grabbing all the posts and populating postmeta.
* Once, only on this plugin\'s activation.
*/
function wpse_do_once() {
$all_posts = new WP_Query(
array(
\'post_type\' => \'any\',
\'post_status\' => array( \'publish, pending, draft\' ),
\'posts_per_page\' => -1
)
);
while ( $all_posts->have_posts() ) : $all_posts->the_post();
$post_content = get_the_content();
//the src information from iframe
$src = wpse_get_iframe_src( $post_content );
foreach( $src as $link ) {
//Populating the custom field
//Assumed: Your custom field id is \'_my_embed_link\'
//this will override the values if there\'s two or more iframes
if( !empty() ) {
update_post_meta( get_the_ID(), \'_my_embed_link\', esc_url( $link ) );
}
}
endwhile;
wp_reset_postdata();
}
register_activation_hook( __FILE__, \'wpse_do_once\' );
/** HELPER FUNCTION */
/**
* Grab all iframe src from a string.
* @author Dbranes
* @link http://wpquestions.com/question/showChrono/id/10006
* @param string $input The content.
* @return string The src attribute value.
*/
function wpse_get_iframe_src( $input ) {
preg_match_all("/<iframe[^>]*src=[\\"|\']([^\'\\"]+)[\\"|\'][^>]*>/i", $input, $output );
$return = array();
if( isset( $output[1][0] ) )
$return = $output[1];
return $return;
}
它的工作原理:它从站点获取所有状态的帖子,然后获取所有内容,并使用自定义功能(由RegEx提供支持)(
source) 已从iframes获取src。然后将src值放入posmeta(也称为自定义字段)。
请注意,如果帖子内容中有多个src值,则helper函数将返回一个src值数组。所以一个人update_post_meta()
将用另一个覆盖其中一个。在这种情况下,可以选择避免foreach循环,并以序列化形式保存数组。然后,在显示字段数据时,使用get_post_meta()
您需要从那里显示单个URL。