Home › Forums › General Issues › ACF widget dont save data.
Hej. Sorry for my english. I have a problem with custom fields in widget. I create fields, but i haven’t save data. This problem view in this video https://youtu.be/vvNFAVXDk9Q. And my test code:
<?php
class CustomWidget extends WP_Widget {
function __construct() {
parent::__construct(
'custom_widget', // Base ID
__('CustomWidget', 'text_domain'), // Name
array( 'description' => __( 'Some CustomWidget', 'text_domain' ), )
);
}
public function form( $instance ){
?>
<p></p>
<?php
}
public function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] );
// before and after widget arguments are defined by themes
echo $args['before_widget'];
if ( ! empty( $title ) )
echo $args['before_title'] . $title . $args['after_title'];
// This is where you run the code and display the output
?>
<a href="test"><?php var_dump(get_field('dzialaj','widget_' . $args['widget_id']))?></a>
<?php
echo $args['after_widget'];
}
}
// register Foo_Widget widget
function register_foo_widget() {
register_widget( 'CustomWidget' );
}
add_action( 'widgets_init', 'register_foo_widget' );
How fix it.
We’ve just released ACF 5.10 which includes a fix for this issue! Please let me know if you continue to have any problems after updating.
@lgladdy
I use locally
Wordpress 5.8.1
ACF version 5.10.2
Advanced Custom Fields Multilingual 1.9.1
WPML Media 2.6.5
WPML Multilingual CMS 4.4.12
WPML String Translation 3.1.10
WPML Translation Management 2.10.8.
When I save my custom widget, the widget get the ID media_widget-1
but the saved options receive the ID widget_media_widget-12
Workflow:
<input class="widget-id" type="hidden" name="widget-id" value="media_widget-12">
<– maybe the ID should be 1 not 12Update
media_widget-1
:<input class="widget-id" type="hidden" name="widget-id" value="media_widget-1">
Hope this will help.
+ The ID in the frontend differs to the widget ID in backend:
class custom_Media_Widget extends WP_Widget
{
/**
* @param string $idBase
* @param string $name
* @param array $widgetOptions
* @param array $controlOptions
*/
public function __construct(
string $idBase = 'media_widget',
string $name = 'Media Asset Widget',
array $widgetOptions = [],
array $controlOptions = []
) {
$widgetOptions ['classname'] = 'media_widget';
$widgetOptions ['description'] = 'Widget for Media Assets';
parent::__construct($idBase, $name, $widgetOptions, $controlOptions);
}
public function widget($args, $instance)
{
var_dump($args['widget_id']);
//....
}
}
will output: string 'media_widget-3' (length=14)
Edit: The id/number which is set in the backend isn’t relevant anymore.
I test it on the meta widget and it show the same behaviour.
ID: meta-13 on save
ID: meta-2 in frontend
You must be logged in to reply to this topic.
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.