Erstellen Sie Ihre eigenen Feldtypen, indem Sie das Feldtyp-System von Field Forge erweitern.
Registrierung eines benutzerdefinierten Feldtyps
php
add_action( 'fieldforge/register_field_types', function() {
class FIELDFORGE_Field_Type_Star_Rating {
public function __construct() {
add_filter( 'fieldforge/field_types', [ $this, 'register' ] );
add_filter( 'fieldforge/render_field/type=star_rating', [ $this, 'render' ], 10, 2 );
add_filter( 'fieldforge/format_value/type=star_rating', [ $this, 'format' ], 10, 3 );
}
public function register( $types ) {
$types['star_rating'] = [
'label' => 'Star Rating',
'category' => 'basic',
'defaults' => [
'max_stars' => 5,
],
];
return $types;
}
public function render( $field, $value ) {
$max = $field['max_stars'] ?? 5;
$current = intval( $value );
echo '<div class="ff-star-rating" data-max="' . $max . '">';
for ( $i = 1; $i <= $max; $i++ ) {
$active = $i <= $current ? ' active' : '';
echo '<span class="star' . $active . '" data-value="' . $i . '">★</span>';
}
echo '<input type="hidden" name="' . esc_attr( $field['name'] ) . '" value="' . esc_attr( $current ) . '">';
echo '</div>';
}
public function format( $value, $field, $post_id ) {
return intval( $value );
}
}
new FIELDFORGE_Field_Type_Star_Rating();
} );Verwendung des benutzerdefinierten Feldtyps
php
// In a field group definition
FIELDFORGE_Field_Groups::instance()->create( [
'title' => 'Review Fields',
'fields' => [
[
'key' => 'field_review_rating',
'label' => 'Rating',
'name' => 'rating',
'type' => 'star_rating',
'max_stars' => 5,
],
],
'location_rules' => [
[ [ 'param' => 'post_type', 'operator' => '==', 'value' => 'review' ] ],
],
] );
// In a template
$rating = get_field( 'rating' ); // Returns integer, e.g., 4
echo str_repeat( '★', $rating ) . str_repeat( '☆', 5 - $rating );—