Home › Forums › General Issues › Empty previous entered field-data on save?
I have a custom post type (for information boxes on the homepage). I give the customer the possibility to choose between 4 layouts (conditions):
1: header + content with colored border
2: header + content with background color (ACF color picker field)
3: header + content with background image (ACF image field)
4: a google map (ACF google map field)
This is how it looks like on the custom post type page:
The problem is: When someone first has chosen e.g. a background-color and saved the post he has to empty the color field before he can choose another option (e. g. background-image), otherwise the new option will be ignored. Is there a possibility to delete entrys of other fields on post saving?
This is my code:
<?php
// WP_Query arguments
$args = array (
'post_type' => array( 'thema' ),
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
$elements = [];
while ( $query->have_posts() ) {
$query->the_post(); ?>
<?php ob_start(); ?>
<?php if(get_field("box_hintergrundfarbe")): ?>
<!-- box with background color -->
<article <?php post_class('box cf sameheight-item') ?> style="background-color:<?php the_field("box_hintergrundfarbe"); ?>;">
<div class="box-inner cf">
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</article>
<?php elseif(get_field("box_hintergrundbild")): ?>
<!-- box with background image -->
<article <?php post_class('box cf sameheight-item') ?> style="background-image: url(<?php the_field("box_hintergrundbild"); ?>)">
<div class="box-inner light cf">
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</article>
<?php elseif(get_field("location")): ?>
<!-- box with google map -->
<article <?php post_class('box cf sameheight-item') ?>>
<div class="cf">
<?php
$location = get_field("location");
if( !empty($location) ):
?>
<div class="acf-map">
<div class="marker" data-lat="<?php echo $location['lat']; ?>" data-lng="<?php echo $location['lng']; ?>"></div>
</div>
<?php endif; ?>
</div>
</article>
<?php else: ?>
<!-- regular box with border -->
<article <?php post_class('box cf sameheight-item') ?>>
<div class="box-inner cf" style="border: 3px <?php the_field('farbe_b','option'); ?> solid; border-bottom: none;">
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</article>
<?php endif; ?>
<?php $content = ob_get_clean(); ?>
<?php
$element = $content;
$elements[] = $element;
}
if(sizeof($elements)>0) {
$size = ceil(12 / sizeof($elements));
if($columns<2) $columns = 2;
foreach($elements AS $element) {
echo '<div class="col-md-'.$size.'">'.$element.'</div>';
}
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
?>
I actually just answered a similar question. http://support.advancedcustomfields.com/forums/topic/delete-repeater-row-not-staying-deleted-with-onditional-logic/
In you case, rather than
if (get_field('content_field'))
You should do
$selection = get_field('radio_field');
if ($selections == 'choice 1') {
// output code for choice 1
}
if ($selections == 'choice 2') {
// output code for choice 2
}
Or you could combine them into an if elseif else statement. Of even better yet I would probably choose a switch statement.
Thanks, i found the “acfsave_post” page, too but did not understand a thing. I will try to empty the tables on save, i don’t want to put ghost data in the DB …
have the filter run after ACF (priority 20)
Then you get use get_field to get the radio field and update_field if you want to clear it but leave the DB entries.
If you want to completely delete the db entry you’ll need to use delete_post_meta() WP function and you will need to delete 2 values.
'your_field_name'
AND
'_your_field_name'
If you are doing this for repeater fields or other nested fields you should look at the database to see how ACF names these types of fields.
The topic ‘Empty previous entered field-data on save?’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.