Reputation: 81
I am using Custom Field Plugin Pro. I created 3 Fields and 4 Sub Fields of that. Now when I am trying to add the code in single.php WordPress theme editor, then it breaking posts page CSS.
After figuring things I found that: when I post the PHP code of just 1 field code then the website doesn't break. But putting 2/3 breaking the website. Also, I found when I put 1-1 entry in each fields then the website works fine with all 3 fields code. I don't know why this is happening.
This is the code I am using in single.php
<!-- Show Custom Fiels---------------->
<div id="Custom_Fields" class="sbox fixidtab">
<style>
table, th, td {
border: 1px solid white;
border-collapse: collapse;
background:black;
}
th, td {
padding: 5px;
text-align: center;
}
</style>
<?php
// Field 1 -----
if( have_rows('Field1') ):?>
<div class="custom_fields" style="overflow-x:auto;">
<h2><?php _d('Type : Name'); ?></h2>
<table style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type 1</th>
<th>Type 2</th>
<th>Type 3</th>
<th>Type 4</th>
</tr>
</thead>
<tbody>
<?php while ( have_rows('F1') ) : the_row();
$name_F1 = get_sub_field('name');
$type_F1 = get_sub_field('type');
$link_F1 = get_sub_field('link');
$link_F1_full = "<a href=".$link_F1." target='_blank'>Visit Now</a>";
$language_F1 = get_sub_field('language');
?>
<tr>
<td><?php echo $name_F1; ?></td>
<td><?php echo $type_F1; ?></td>
<td><?php echo $link_F1_full; ?></td>
<td><?php echo $language_F1; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
<?php
//endwhile;
else :
// no rows found
endif;
?>
</div>
<?php
// Field 2 -----
if( have_rows('Field 2') ):?>
<div class="custom_fields" style="overflow-x:auto;">
<h2><?php _d('Type : Name'); ?></h2>
<table style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type 1</th>
<th>Type 2</th>
<th>Type 3</th>
<th>Type 4</th>
</tr>
</thead>
<tbody>
<?php while ( have_rows('F2') ) : the_row();
$name_F2 = get_sub_field('name');
$type_F2 = get_sub_field('type');
$link_F2 = get_sub_field('link');
$link_F2_full = "<a href=".$link_F2." target='_blank'>Visit Now</a>";
$language_F2 = get_sub_field('language');
?>
<tr>
<td><?php echo $name_F2; ?></td>
<td><?php echo $type_F2; ?></td>
<td><?php echo $link_F2_full; ?></td>
<td><?php echo $language_F2; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
<?php
//endwhile;
else :
// no rows found
endif;
?>
</div>
<?php
// Field 3 -----
if( have_rows('Field 3') ):?>
<div class="custom_fields" style="overflow-x:auto;">
<h2><?php _d('Type : Name'); ?></h2>
<table style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type 1</th>
<th>Type 2</th>
<th>Type 3</th>
<th>Type 4</th>
</tr>
</thead>
<tbody>
<?php while ( have_rows('F3') ) : the_row();
$name_F3 = get_sub_field('name');
$type_F3 = get_sub_field('type');
$link_F3 = get_sub_field('link');
$link_F3_full = "<a href=".$link_F3." target='_blank'>Visit Now</a>";
$language_F3 = get_sub_field('language');
?>
<tr>
<td><?php echo $name_F3; ?></td>
<td><?php echo $type_F3; ?></td>
<td><?php echo $link_F3_full; ?></td>
<td><?php echo $language_F3; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
<?php
//endwhile;
else :
// no rows found
endif;
?>
</div>
</div>
If I put just code for field 1 then website is absolutely fine:
<!-- Show Custom Fiels---------------->
<div id="Custom_Fields" class="sbox fixidtab">
<style>
table, th, td {
border: 1px solid white;
border-collapse: collapse;
background:black;
}
th, td {
padding: 5px;
text-align: center;
}
</style>
<?php
// Field 1 -----
if( have_rows('Field1') ):?>
<div class="custom_fields" style="overflow-x:auto;">
<h2><?php _d('Type : Name'); ?></h2>
<table style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type 1</th>
<th>Type 2</th>
<th>Type 3</th>
<th>Type 4</th>
</tr>
</thead>
<tbody>
<?php while ( have_rows('F1') ) : the_row();
$name_F1 = get_sub_field('name');
$type_F1 = get_sub_field('type');
$link_F1 = get_sub_field('link');
$link_F1_full = "<a href=".$link_F1." target='_blank'>Visit Now</a>";
$language_F1 = get_sub_field('language');
?>
<tr>
<td><?php echo $name_F1; ?></td>
<td><?php echo $type_F1; ?></td>
<td><?php echo $link_F1_full; ?></td>
<td><?php echo $language_F1; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
<?php
//endwhile;
else :
// no rows found
endif;
?>
</div>
</div>
Upvotes: 1
Views: 54
Reputation: 1612
Be careful with the names of your fields. I think your names are wrong. Then your div
opens within your if statement
but closes after your if statement
and destroys your html structure
if the statement is false. By the way, here you can read about the usage of repeater fields: https://www.advancedcustomfields.com/resources/repeater/
Look at this example:
<?php
// Field 1 -----
if( have_rows('F1') ): // i think it has to be F1 instead of Field1 here?
?>
<div class="custom_fields" style="overflow-x:auto;">
<h2><?php _d('Type : Name'); ?></h2>
<table style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type 1</th>
<th>Type 2</th>
<th>Type 3</th>
<th>Type 4</th>
</tr>
</thead>
<tbody>
<?php while ( have_rows('F1') ) : the_row();
$name_F1 = get_sub_field('name');
$type_F1 = get_sub_field('type');
$link_F1 = get_sub_field('link');
$link_F1_full = "<a href=".$link_F1." target='_blank'>Visit Now</a>";
$language_F1 = get_sub_field('language');
?>
<tr>
<td><?php echo $name_F1; ?></td>
<td><?php echo $type_F1; ?></td>
<td><?php echo $link_F1_full; ?></td>
<td><?php echo $language_F1; ?></td>
</tr>
<?php
endwhile;
?>
</tbody>
</table>
</div><!-- RIGHT HERE -->
<?php
//endwhile;
else:
// no rows found
endif;
?>
<!--</div> WRONG HERE -->
Upvotes: 1