我在wordpress上使用extra_user_details.php在私人资料页面中显示用户详细信息。由于我使用了很多额外的字段,我虽然打破了查询并为每个X值生成相同的输出以显示为标签:
function eud_extract_ExtraFields() {
if ( get_option( 'eud_fields' ) ) {
$all_fields = unserialize( get_option( 'eud_fields' ) );
if ( count( $all_fields ) > 0 ) {
$output = '';
foreach ( $all_fields as $key => $value ) {
if ( isset($value[3]) && ! empty($value[3]) ) {
if ( ($value[3] == 'disable') || ! current_user_can($value[3]) ) {
continue;
}
}
$output .= '<tr>
<th><label for="eud' . esc_attr( $value[1] ) . '">' . esc_attr( $value[0] ) . '</label></th>
<td><input name="eud' . esc_attr( $value[1] ) . '" id="eud' . esc_attr( $value[1] ) . '" type="text" value="' . esc_attr( get_user_meta( get_user_id(), $value[1], true ) ) . '" class="regular-text code" /> <span class="description">' . ( ( isset( $value[2] ) && $value[2] !== '' ) ? esc_attr( stripslashes( $value[2] ) ) : '' ) . '</span></td>
</tr>';
}
}
if ($output != '') {
echo '<div><table class="form-table">';
echo $output;
echo '</table></div>';
}
} }
谢谢!
我不确定这是不是我要找的东西。我就在附近......
function eud_extract_ExtraFields() {
if ( get_option( 'eud_fields' ) ) {
$all_fields = unserialize( get_option( 'eud_fields' ) );
if ( count( $all_fields ) > 0 ) {
$output = '';
$i=0;
foreach ($all_fields as $key => $value ) {
if ( isset($value[3]) && ! empty($value[3]) ) {
if ( ($value[3] == 'disable') || ! current_user_can($value[3]) ) {
continue;
}
}
$output .= '<tr>
<th><label for="eud' . esc_attr( $value[1] ) . '">' . esc_attr( $value[0] ) . '</label></th>
<td><input name="eud' . esc_attr( $value[1] ) . '" id="eud' . esc_attr( $value[1] ) . '" type="text" value="' . esc_attr( get_user_meta( get_user_id(), $value[1], true ) ) . '" class="regular-text code" /> <span class="description">' . ( ( isset( $value[2] ) && $value[2] !== '' ) ? esc_attr( stripslashes( $value[2] ) ) : '' ) . '</span></td>
</tr>';
++$i;
if(!($i % 2)) {
echo '<div><table class="form-table">';
echo $output;
echo '</table></div>';
}
}
}
}
}
但我需要拆分回声,我的意思是,结果是:
第一个标签回显1,2
第二个标签回显1,2,3,4
第三个标签回显1,2,3,4,5,6
我需要$ output只是:
第一个标签回显1,2
第二个标签回显3,4
第三个标签回显5,6
第四个标签回显7(如果存在)
答案 0 :(得分:3)
你可以使用模数:
$i=0;
foreach ( $all_fields as $key => $value ) {
if( $i++%5 === 0 ){ echo 'I was number 5';}
}
或者如果您更喜欢二进制比较(应该更快):
if( $i++&101 === 0 ){ echo 'I was number 5';}
我会给你一个例子,你可以把它拼凑起来代码:
假设您有N个span
,并且您希望它们按div
每5个分组:
// You start with:
echo '<div>';
for($i=1; $i<=23; $i++){
echo '<span> '.$i.' </span>'; // just an example, could be anything here
}
echo '</div>';
这会将23 span
放入一个大div
。现在我们添加一些内容将它们分组为5:
// You start with:
echo '<div>';
for($i=1; $i<=23; $i++){
echo '<span> '.$i.' </span>'; // just an example, could be anything here
if( $i %5===0 ){
echo '</div><div>'; // every 5th, close the div, and open a fresh one.
}
}
echo '</div>';
这将导致5(= coincedence,与%5
无关)div,4与5个跨度,以及其余3个。你可以用任何元素做这个技巧。
提示:在模数参数语句中,您应该添加最大值$i %5===0 && $i!==23
,以防止</div></div><div>
$i
如果{{1}}是一个可以解除5的数字
答案 1 :(得分:0)
解决方案来自朋友,谢谢!
function eud_extract_ExtraFields() {
if (get_option('eud_fields')) {
$all_fields = unserialize(get_option('eud_fields'));
if (count($all_fields) > 0) {
$output = '';
$i = 1;
$htmlTotal = '';
foreach ($all_fields as $key => $value) {
if (isset($value[3]) && !empty($value[3])) {
if (($value[3] == 'disable') || !current_user_can($value[3])) {
continue;
}
}
$output .= '<tr>
<th><label for="eud' . esc_attr($value[1]) . '">' . esc_attr($value[0]) . '</label></th>
<td><input name="eud' . esc_attr($value[1]) . '" id="eud' . esc_attr($value[1]) . '" type="text" value="' . esc_attr(get_user_meta(get_user_id(), $value[1], true)) . '" class="regular-text code" /> <span class="description">' . ( ( isset($value[2]) && $value[2] !== '' ) ? esc_attr(stripslashes($value[2])) : '' ) . '</span></td>
</tr>';
$i++;
/* number of fields to show per tab */
if ($i % 2) {
$htmlTotal .= '<div><table class="form-table">' . $output . '</table></div>';
$output = '';
}
}
echo $htmlTotal;
}
}
}