我正在想办法保存mp3链接the_content
到自定义字段(使用ACF)。
在中发布the_content
如下所示:
http://feeds.soundcloud.com/stream/347813964-scott-johnson-27-tms-1361-pm.mp3
音频文件的说明
我可以使用提取主题中的mp3链接preg_match_all
但将mp3链接保存到自定义字段比使用PHP提取要好得多。
<?php $pattern = "/(http|https):\\/\\/.*\\/(.*)\\.(mp3|m4a|ogg|wav|wma)/";
$subject = get_the_content();
preg_match_all ($pattern, $subject, $matches);
echo $matches[0][0];?>
以上仅显示mp3链接。下面的代码是我在主题中使用的代码
functions.php
. 我有一个叫ACF的文本框
audio_url
在不保存任何内容的编辑器中,保存帖子时只有一个空白框。
function save_url_link($post_id){
$pattern = "/(http|https):\\/\\/.*\\/(.*)\\.(mp3|m4a|ogg|wav|wma)/";
$subject = get_the_content($post_id);
preg_match_all ($pattern, $subject, $matches);
update_post_meta($post_id, \'audio_url\', $matches[0][0]);}
add_action( \'save_post\', \'save_url_link\' );
最合适的回答,由SO网友:RRikesh 整理而成
出于某种原因$subject
调用时变量为空get_the_content($post_id)
.
使用时save_post
钩子,您可以传递其他参数,如$post
和$update
回拨您的电话。
对于您的情况,您可以使用第二个参数$post
抓取帖子内容。
Code:
function save_url_link( $post_id, $post ){
$pattern = "/(http|https):\\/\\/.*\\/(.*)\\.(mp3|m4a|ogg|wav|wma)/";
$subject = $post->post_content;
preg_match_all ( $pattern, $subject, $matches );
update_post_meta( $post_id, \'audio_url\', $matches[0][0] );
}
add_action( \'save_post\', \'save_url_link\', 10, 2 );
上面的代码使用了您实现的逻辑,但有一些不同。
现在我们使用第二个参数$post
在回调中,我们将通过$post->post_content
.
add_action
\'s的第四个参数是回调将采用的参数数。默认值为1
. 我们正在使用2
因为我们现在有$post_id
和$post
.