我正在尝试返回一个我可以在函数中使用的字符串(以编程方式在WordPress中添加术语)。
我生成字符串的函数基本上是循环遍历符合特定条件的html元标记,如下所示:
function getYouTubeTags( $post_id ) {
$video_id = get_post_meta( get_the_ID(), 'rfvi_video_id', true );
$tag_url = "http://www.youtube.com/watch?v=" . $video_id;
$sites_html = file_get_contents($tag_url);
$html = new DOMDocument();
@$html->loadHTML($sites_html);
$meta_og_tag = null;
foreach( $html->getElementsByTagName('meta') as $meta ) {
if( $meta->getAttribute('property')==='og:video:tag' ){
$meta_og_tag = $meta->getAttribute('content');
print_r ($meta_og_tag . ",");
}
}
}
当我执行此操作(getYouTubeTags();
)时,它返回字符串:
supra vs lambo,tt lambo,twin turbo,street race,texas streets,underground racing,supra,turbo supra,1200hp,nitrous,superleggera,gallardo,
在我为帖子添加术语的功能中,以下操作不起作用:
function rct_save_post_terms( $post_id ) {
$terms = getYouTubeTags();
wp_set_post_terms( $post_id, $terms, 'post_tag', true );
}
如果我手动添加从第一个函数输出的字符串,它就可以工作:
function rct_save_post_terms( $post_id ) {
$terms = 'supra vs lambo,tt lambo,twin turbo,street race,texas streets,underground racing,supra,turbo supra,1200hp,nitrous,superleggera,gallardo,';
wp_set_post_terms( $post_id, $terms, 'post_tag', true );
}
此外,根据WordPress,$terms
中的wp_set_post_terms
:可以是数组或逗号分隔的字符串。
我知道我必须在这里遗漏一些简单的东西,但似乎无法弄明白。提前感谢您的帮助!
答案 0 :(得分:2)
由于您希望重用这些字符串,为什么不返回这些字符串:
function getYouTubeTags( $post_id ) {
$out = null;
$video_id = get_post_meta( get_the_ID(), 'rfvi_video_id', true );
$tag_url = "http://www.youtube.com/watch?v=" . $video_id;
$sites_html = file_get_contents($tag_url);
$html = new DOMDocument();
@$html->loadHTML($sites_html);
$meta_og_tag = null;
foreach( $html->getElementsByTagName('meta') as $meta ) {
if( $meta->getAttribute('property')==='og:video:tag' ){
// i seriously doubt this checking i think this should be
// if($meta->getAttribute('property') == 'og:video') {
$meta_og_tag = $meta->getAttribute('content');
// print_r ($meta_og_tag . ",");
$out[] = $meta_og_tag; // gather them inside first
}
}
return implode(',', $out); // return implode comma delimited strings
}
然后亲密,然后你可以使用它们:
function rct_save_post_terms( $post_id ) {
$terms = getYouTubeTags(); // strings are in here
wp_set_post_terms( $post_id, $terms, 'post_tag', true );
}
答案 1 :(得分:1)
您似乎没有在原始函数中返回值。你需要使用;
return $meta_og_tag;
在函数末尾,将值返回给指定的变量。
此外,您需要使用.=
;
$meta_og_tag .= $meta->getAttribute('content');
OR 您可以将每个属性保存在数组中,并implode
表示返回;
// inside loop
$meta_og_tag[] = $meta->getAttribute('content');
// outside loop
return implode(', ',$meta_og_tag);
print_r
将简单地回显变量的内容,而不是返回值。
希望这有帮助。