I’m trying to make a seemingly simple bit of php (it output’s to a Gravity Forms field, but that’s basically irrelevant).
I’m using Gravity Forms to create posts, which I can do easily, however I want each post to have a unique title (as this is how the user navigates).
I managed to get this working for registration by checking if the user registration id (also the post title in that situation) was already in use, like so:
{
// Builds complete user id
function build_id ($pcode_id, $assigned_id_no) {
do {
$cmplt_id = $pcode_id . "-" . number_pad($assigned_id_no, 3); // Gets postcode string and calls the number padding function to add the leading 0's
$assigned_id_no++; // Increase assigned_id_no
}
while(username_exists($cmplt_id)); // Restart loop if username_exists is true
return $cmplt_id;
return $cmplt_id;
}
// Takes a string and add’s however many 0’s (or other character placed there) to the left of the string
function number_pad($number,$n) {
return str_pad((int) $number,$n,”0″,STR_PAD_LEFT);
}
}
$pcode_id is just a formatted post code as a string and $assigned_id_no is simply a loop number, passes 1 basically.
As you can see the while criteria is does this exist, but for the life of me I can’t emulate this by simply checking post type.
The nearest I’ve come is get_page_by_title() and if it’s null then finish else loop, but it doesn’t work:
{
function home_patient_id() {
$post_id = $_GET[‘home_id’];
$home_post_code = get_post_meta($post_id, “wpcf-home-post-code”, true);
$home_post_code = format_id($home_post_code);
$home_post_code = build_home_id($home_post_code, 1);
return $home_post_code;
}
// Builds complete user id
function build_home_id ($pcode_id, $assigned_id_no) {
do {
$cmplt_id = $pcode_id . "-" . number_pad($assigned_id_no, 3); // Gets postcode string and calls the number padding function to add the leading 0's
$assigned_id_no++; // Increase assigned_id_no
$exist = get_page_by_title($cmplt_id);
}
while(get_page_by_title($cmplt_id)); // Restart loop if username_exists is true
return $cmplt_id;
return $cmplt_id;
}
}
I’ve also tried checking if it returns null but nothing is working, I either get nothing or an infinite loop.
Can someone please help I’m pulling my hair out over this!
Many thanks.
In case anyone’s wondering I managed to get this fixed with a pointer about using var_dump(). Here’s the modified loop.
The problem is the get_page_by_title() returns an object not a string. Hope this helps someone.