如何在 PHP 字符串中创建 while 循环?
Posted
技术标签:
【中文标题】如何在 PHP 字符串中创建 while 循环?【英文标题】:How do I create a while loop within a PHP string? 【发布时间】:2015-06-26 11:20:00 【问题描述】:我正在使用简码终极灯箱创建查询。但这将在常规 php 页面中起作用的唯一方法是将数据保存为字符串。所以我需要做的是创建我的查询,但以某种方式在字符串中获取我的结果。
在我使用任何类型的 php 查询之前,以下是可行的:
<?php
$my_tabs = "<ul class='easybuttons'>
<li>[su_lightbox type='inline' src='#lightbox1']AT&T[/su_lightbox]</li>
<li>[su_lightbox type='inline' src='#lightbox2']Sprint[/su_lightbox]</li>
<li>[su_lightbox type='inline' src='#lightbox3']T-Mobile[/su_lightbox]</li>
</ul>";
echo do_shortcode( $my_tabs );
?>
但我需要 ATT、Sprint、T-Mobile 是动态的。请记住,短代码只有在字符串中才有效。
那么我怎样才能在这个字符串中做一个while循环呢?我尝试使用运算符但没有用。
$args = array('post_type' => 'services', 'category_name' => $childid, 'order_by' => 'the_title', 'order' => 'ASC');
query_posts($args);
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() )
$my_tabs .= '<ul class="easybuttons">';
while ( $the_query->have_posts() )
$the_query->the_post();
$my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox1"]' . get_the_title() . '</li>';
$my_tabs .= '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
echo do_shortcode( $my_tabs );
?>
更新:
我尝试使用此代码,但它确实有效。什么都没有通过。我没有收到任何错误,但没有显示短代码。
<?php
$args = array('post_type' => 'services', 'category_name' => $childid, 'order_by' => 'the_title', 'order' => 'ASC');
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() )
$lid = 1;
$my_tabs .= '<ul class="easybuttons">';
while ( $the_query->have_posts() )
$the_query->the_post();
$my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox' . $lid . '"]' . get_the_title() . '</li>';
$lid++;
$my_tabs .= '</ul>';
echo do_shortcode( $my_tabs );
wp_reset_postdata();
【问题讨论】:
【参考方案1】:您需要在某处初始化变量$my_tabs
,例如在 if 块之外,并增加灯箱 ID。您无需致电query_posts()
。 order_by
应该是 title
,而不是 the_title
。确保$childid
绝对是string of the category slug,不是名称,如果有疑问,请完全取出该参数,看看你是否得到任何东西,因为我认为这很可能是主要问题.
$args = array('post_type' => 'services', 'category_name' => $childid, 'order_by' => 'title', 'order' => 'ASC');
// The Query
$the_query = new WP_Query( $args );
$my_tabs = '';
// The Loop
if ( $the_query->have_posts() )
$lid = 1;
$my_tabs .= '<ul class="easybuttons">';
while ( $the_query->have_posts() )
$the_query->the_post();
$my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox' . $lid . '"]' . get_the_title() . '</li>';
$lid++;
$my_tabs .= '</ul>';
【讨论】:
是的,我愿意!这实际上是我的下一个挑战!我会试试这个! 这个新查询没有结果。嗯 @user2593040 查看我的更新答案。如果还是不行,试试 var_dump($the_query),看看结果如何 @user2593040 您是否尝试过从参数中删除'category_name' => $childid
?如果是这样,你能发布那个vardump吗?查询中的某些内容导致未显示任何帖子,这是我的最佳猜测。以上是关于如何在 PHP 字符串中创建 while 循环?的主要内容,如果未能解决你的问题,请参考以下文章
在useEffect中创建一个异步函数,并在函数的while循环中使用await,似乎不起作用