post_author); $current_user_id = (int)get_current_user_id(); if ($current_user_id !== $current_post_author_id) { return false; } return true; } /* * action to be done at the init state of the page * */ function partner_page_init_CIPF() { Plgntls::debug_infos(2); if (!is_partner_CIPF()) { return; } Plgntls::debug_infos(); // https://developer.wordpress.org/reference/functions/get_query_var/#more-information global $wp; $wp->add_query_var('action'); } add_action('init','partner_page_init_CIPF'); /* * upload scripts and styles on partner page * */ function partner_page_scripts_CIPF() { Plgntls::debug_infos(2); /* * if on post, load css * - to hide partner own stuff * - for states * */ if (!is_single()) { return; } Plgntls::debug_infos(); Plgntls::add_to_front(array('css/partner_page.css')); $post_id = get_the_ID(); display_states_css_CIPF($post_id); /* * then check if is partner own page * */ if (!is_own_partner_CIPF()) { return; } /* * on partner own page, load css to show own stuff * */ Plgntls::add_to_front(array('css/partner_page_own.css')); } add_action('wp_enqueue_scripts', 'partner_page_scripts_CIPF', 11); /* * prevent access to the post if in draft * */ function restrict_partner_page_draft_CIPF() { Plgntls::debug_infos(2); /* * the restrictions only concerns logged in users * and on post (partner pages) * -> own partners are not restricted * -> also not admin and fipf * */ if (!is_single()) { return; } if (!is_user_logged_in()) { return; } if (is_fipf_CIPF()) { return; } if (is_admin_CIPF()) { return; } if (is_own_partner_CIPF()) { return; } Plgntls::debug_infos(); /* * get the post id and object * */ $post_id = get_the_ID(); $current_post = get_post($post_id); if (is_null($current_post)) { return; } /* * if post is draft, nobody should see it, * except own partner (but they are already out this function) * */ if ($current_post->post_status === 'draft') { redirect_home_CIPF(); } } add_action('template_redirect', 'restrict_partner_page_draft_CIPF'); /* * listen to the front button to toggle page publish/draft * */ function toggle_partner_page_CIPF() { Plgntls::debug_infos(2); $toggle_partner_page = Cipf::QUERY_TOGGLE_PARTNER_PAGE; /* * check if : * - is own partner * - has query action * to check for 'action' query, add 'action' to query vars in 'init' hook * -> https://developer.wordpress.org/reference/functions/get_query_var/#more-information * */ if (!is_own_partner_CIPF()) { return; } Plgntls::debug_infos(); $is_action_toggle = get_query_var('action', false); if ($is_action_toggle !== $toggle_partner_page) { return; } /* * get the post id and object * */ $post_id = get_the_ID(); $current_post = get_post($post_id); if (is_null($current_post)) { return; } /* * toogle the status * */ if ($current_post->post_status === 'publish') { wp_update_post(array( 'ID' => $post_id, 'post_status' => 'draft', )); set_page_draft_CIPF($post_id); } else if ($current_post->post_status === 'draft') { wp_update_post(array( 'ID' => $post_id, 'post_status' => 'publish', )); set_page_publish_CIPF($post_id); } /* * redirects without the query * */ $url = remove_query_arg('action'); wp_safe_redirect($url); exit; } add_action('template_redirect', 'toggle_partner_page_CIPF', 5); /* * if url uses post id, ex: /?p=40772 * make redirects to its post_name version, ex: /la-fipf * */ function partner_page_check_url_CIPF() { Plgntls::debug_infos(2); if (!is_own_partner_CIPF()) { return; } Plgntls::debug_infos(); /* * get the post name * */ $post_id = get_the_ID(); $current_post = get_post($post_id); if (is_null($current_post)) { return; } /* * * */ $current_slug = trim($_SERVER['REQUEST_URI'], '/'); $slug = trim($current_post->post_name, '/'); if ($slug !== $current_slug) { wp_safe_redirect(home_url($slug)); exit; } } add_action('template_redirect', 'partner_page_check_url_CIPF', 9); /* * early checks on partner page * */ function page_partner_check_CIPF() { Plgntls::debug_infos(2); // is partner own page if (!is_own_partner_CIPF()) { return; } Plgntls::debug_infos(); $post_id = get_the_ID(); $current_post = get_post($post_id); /* * checks if the acf state field is set accrodingly to page state * */ if ($current_post->post_status === 'publish') { set_page_publish_CIPF($post_id); } else if ($current_post->post_status === 'draft') { set_page_draft_CIPF($post_id); } } add_action('wp', 'page_partner_check_CIPF', 11); ?>