Php 循环中的函数 函数mm_posts(){ $result=''; 如果(have_posts()): 查询帖子('cat=5,每页帖子=4'); while(have_posts()):the_post(); $post_thumbnail_id=get_post_thumbnail_id(); $post_thumbnail_url=wp_get_attachment_image_src($post_thumbnail_id,数组(300200)); 函数mega_thmb(){ 如果(已发布缩略图()): $img=''; 其他: $img=''; endif; 返回$img; } $result.=' ' . mega_thmb()。 “运动 Lorem ipsum dolor sit amet '; 结束时; wp_reset_query(); endif; 返回$result; }
Php显示错误:致命错误:无法重新声明mega_thmb()(以前在Php 循环中的函数 函数mm_posts(){ $result=''; 如果(have_posts()): 查询帖子('cat=5,每页帖子=4'); while(have_posts()):the_post(); $post_thumbnail_id=get_post_thumbnail_id(); $post_thumbnail_url=wp_get_attachment_image_src($post_thumbnail_id,数组(300200)); 函数mega_thmb(){ 如果(已发布缩略图()): $img=''; 其他: $img=''; endif; 返回$img; } $result.=' ' . mega_thmb()。 “运动 Lorem ipsum dolor sit amet '; 结束时; wp_reset_query(); endif; 返回$result; },php,wordpress,Php,Wordpress,Php显示错误:致命错误:无法重新声明mega_thmb()(以前在 我应该怎么做?如何在循环内编写函数?。按如下方式构造代码。此外,每次运行循环时,您都会再次声明函数,即使它已经在内存中。它需要在循环外。最佳做法是根本不嵌入函数 function mm_posts() { $result = ''; if ( have_posts() ) : query_posts('cat=5&posts_per_page=4'); while ( have_p
我应该怎么做?如何在循环内编写函数?。按如下方式构造代码。此外,每次运行循环时,您都会再次声明函数,即使它已经在内存中。它需要在循环外。最佳做法是根本不嵌入函数
function mm_posts() {
$result = '';
if ( have_posts() ) :
query_posts('cat=5&posts_per_page=4');
while ( have_posts() ) : the_post();
$post_thumbnail_id = get_post_thumbnail_id();
$post_thumbnail_url = wp_get_attachment_image_src( $post_thumbnail_id, array(300, 200) );
function mega_thmb() {
if ( has_post_thumbnail() ) :
$img = '<img src="' . $post_thumbnail_url[0] . '" alt="" class="img-responsive">';
else :
$img = '<img src="' . get_template_directory_uri() . '/img/no-image.gif" alt="" class="img-responsive">';
endif;
return $img;
}
$result .= '
<div class="col-md-3">' .
mega_thmb() .
'<div>Sport</div>
<div>Lorem ipsum dolor sit amet</div>
</div>';
endwhile;
wp_reset_query();
endif;
return $result;
}
函数mega_thmb(){
如果(已发布缩略图()):
$img='';
其他:
$img='';
endif;
返回$img;
}
功能mm_posts(){
$result='';
如果(have_posts()):
查询帖子('cat=5,每页帖子=4');
while(have_posts()):the_post();
$post_thumbnail_id=get_post_thumbnail_id();
$post_thumbnail_url=wp_get_attachment_image_src($post_thumbnail_id,数组(300200));
$result.='
' .
mega_thmb()。
“运动
Lorem ipsum dolor sit amet
';
结束时;
wp_reset_query();
endif;
返回$result;
}
我建议在继续之前阅读PHP文档,并参考一些教程。可能需要对代码进行一些其他更改以使其完全正确,但请不要在其他函数中定义函数,尤其是在循环中。阅读手册。每次函数运行时,您正在定义一个名为mega_thmb的函数,但在PHP中,只能有一个具有特定名称的函数(不同类中的方法除外),因此这会导致您看到的错误 您之所以尝试这样做,是因为您认为它将允许您访问变量$post_thumbnail_url,但PHP也不是这样工作的-函数只能将传递给它的变量视为参数,或者使用
global
关键字从全局范围包含。其他任何变量都是局部变量,其值将以开头>空
我可以看到两种解决方案:
- 定义一个普通函数mega_thumb(你对该函数有什么看法?),该函数作为参数传递$post_thumb_url
- 将当前已损坏的mega_thmb中的代码直接放到mm_帖子中,因为您只在一个地方使用它,而且它只有几行长
function mega_thmb() {
if ( has_post_thumbnail() ) :
$img = '<img src="' . $post_thumbnail_url[0] . '" alt="" class="img-responsive">';
else :
$img = '<img src="' . get_template_directory_uri() . '/img/no-image.gif" alt="" class="img-responsive">';
endif;
return $img;
}
function mm_posts() {
$result = '';
if ( have_posts() ) :
query_posts('cat=5&posts_per_page=4');
while ( have_posts() ) : the_post();
$post_thumbnail_id = get_post_thumbnail_id();
$post_thumbnail_url = wp_get_attachment_image_src( $post_thumbnail_id, array(300, 200) );
$result .= '
<div class="col-md-3">' .
mega_thmb() .
'<div>Sport</div>
<div>Lorem ipsum dolor sit amet</div>
</div>';
endwhile;
wp_reset_query();
endif;
return $result;
}