Advanced Contact Form 7 DB lijst sorteren op specifieke kolom

Probleem:
Na wat testen ben ik erachter gekomen dat de plugin Advanced Contact Form 7 DB geen sorteer optie heeft. Een lijst met ingevulde formulieren kan je dus niet sorteren op naam of woonplaats of e-mailadres. Dit is al gemeld door een andere gebruiker op wordpress.org. De auteur heeft aangegeven dat ze het toe gaan voegen, maar ze weten niet wanneer.

Oplossing:
Helaas beschikt de plugin niet over de mogelijkheid om met add_action() of add_filter() bestaande functies uit te breiden. Tegen het principe in heb ik daarom de code van de plugin aangepast. Het is niet netjes, maar het was de enige optie om zelf de sortering te bepalen.

Zoek het bestand plugins/advanced-cf7-db/public/partials/vsz_acf7_db_shortcode_display_front.php op. Ga naar regel 199 waar je onderstaande code ziet staan:

//Get entry wise all fields information
$data_sorted = vsz_cf7_sortdata($data);

//get total count
$total = count($arr_total);

$display_character = (int) apply_filters('vsz_display_character_count',30);

Pas het stuk code aan zodat het vergelijkbaar is met onderstaande code. Pas “achternaam” aan naar de kolom waarop je wilt sorteren. Deze moet hetzelfde zijn als de naam van de kolom zoals hij in Advanced Contact Form 7 in de wp-admin omgeving wordt getoond.

//Get entry wise all fields information
$data_sorted = vsz_cf7_sortdata($data);

// Manual added to sort on the column 'achternaam';
$sortOnColumn = 'achternaam';
usort($data_sorted, function ($a, $b) use($sortOnColumn ) {
    return strcmp($a[$sortOnColumn ], $b[$sortOnColumn ]);
});

//get total count
$total = count($arr_total);

$display_character = (int) apply_filters('vsz_display_character_count',30);

Upload het gewijzigde bestand en controleer het resultaat. Op basis van bovenstaand voorbeeld worden de ingevulde formulieren gesorteerd van a-z op de kolom achternaam.

Oplossing getest op:
WordPress 4.9.8, Advanced Contact Form 7 DB 1.5.0

Beoordeel dit blog

Laat een reactie achter

Your email address will not be published. Required fields are marked *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.