/** * Handle post requests * * @access public * @return void */ public function handle_post() { if (isset($_POST['sp_save_check'])) { // Check if user is allowed to do this if (!current_user_can('manage_options')) { return; } // Check nonce if (!isset($_POST['sp_edit_nonce']) || !wp_verify_nonce($_POST['sp_edit_nonce'], plugin_basename(__FILE__))) { return; } $connection = new SP_Connection(); // Check the id $id = isset($_POST['id']) && $_POST['id'] != '' ? $_POST['id'] : null; $connection->set_id($id); // Check the title if (isset($_POST['title']) && $_POST['title'] != '') { $connection->set_title($_POST['title']); } // Check the slug $slug = ''; if (isset($_POST['slug']) && $_POST['slug'] != '') { $slug = $_POST['slug']; } else { $slug = sanitize_title_with_dashes($_POST['title']); } $connection->set_slug($slug); // Parent $connection->set_parent(trim($_POST['parent'])); // Child $connection->set_child(trim($_POST['child'])); // Check the add new $add_new = 0; if (isset($_POST['add_new']) && $_POST['add_new'] == '1') { $add_new = 1; } $connection->set_add_new($add_new); // Check the add existing $add_existing = 0; if (isset($_POST['add_existing']) && $_POST['add_existing'] == '1') { $add_existing = 1; } $connection->set_add_existing($add_existing); // Check the display children $after_post_display_children = 0; if (isset($_POST['after_post_display_children']) && $_POST['after_post_display_children'] == '1') { $after_post_display_children = 1; } $connection->set_after_post_display_children($after_post_display_children); /** * Action: 'pc_connection_catch_post' - Action that is ran after the connection form data is post but before the connection is saved * * @api SP_Connection $connection The Connection */ $connection = apply_filters('pc_connection_catch_post', $connection); // Save the link $pt_link_manager = new SP_Connection_Manager(); $pt_link_manager->save($connection); wp_redirect(get_admin_url() . 'admin.php?page=post_connector'); exit; } }
/** * This function is used to create a connection between two post types. * * The following parameters should be passed when create a post type link: * * Slug (string) – The new slug of the PTL * Title (string) – The new title of the PTL * Parent (string) – The parent post type id * Child (string) – The child post type id * Sortable (int) – Whether the item is sortable. 1 = yes, 0 = no. * Add new (int) – Whether the user can add and link new items. 1 = yes, 0 = no. * Add existing (int) – Whether the user can link existing items. 1 = yes, 0 = no. * After post display children - Display child posts automatically on post. 1 = yes, 0 = no. * After post display parents - Display parent posts automatically on post. 1 = yes, 0 = no. * Backwards Linking - Set to 1 if you want to allow backwards linking. 1 = enabled, 2 = disabled. * Related - Whether this connection is a related conection or not. 1 = enabled, 2 = disabled. * * The function will return a SP_Connection object. * * @since 1.5.0 * @access public * * @param $slug * @param $title * @param $parent * @param $child * @param $sortable * @param $add_new * @param $add_existing * @param $after_post_display_children * @param $after_post_display_parents * @param $backwards_linking * @param $deprecated * * @return SP_Connection */ public function add_connection($slug, $title, $parent, $child, $sortable, $add_new, $add_existing, $after_post_display_children = 0, $after_post_display_parents = 0, $backwards_linking = 0, $deprecated = false) { // Create the Connection Manager $connection_manager = new SP_Connection_Manager(); // Create the connection $connection = new SP_Connection(); $connection->set_slug($slug); $connection->set_title($title); $connection->set_parent($parent); $connection->set_child($child); $connection->set_add_new($add_new); $connection->set_add_existing($add_existing); $connection->set_after_post_display_children($after_post_display_children); $connection->set_sortable($sortable); $connection->set_after_post_display_parents($after_post_display_parents); $connection->set_backwards_linking($backwards_linking); // Save the connection return $connection_manager->save($connection); }
/** * Method to get a Connection by id * * @access public * * @param int $id * * @return SP_Connection */ public function get_connection($id) { $connection = null; $connection_query = new WP_Query(array('p' => $id, 'post_type' => SP_Constants::CPT_PT_LINK, 'posts_per_page' => '1')); if ($connection_query->have_posts()) { $connection_query->next_post(); // Create the connection $connection = new SP_Connection(); // Set the connection properties $connection->set_id($connection_query->post->ID); $connection->set_slug(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_SLUG, true)); $connection->set_title(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_TITLE, true)); $connection->set_parent(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_PARENT, true)); $connection->set_child(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_CHILD, true)); $connection->set_add_new(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_ADD_NEW, true)); $connection->set_add_existing(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_ADD_EXISTING, true)); $connection->set_after_post_display_children(get_post_meta($connection_query->post->ID, SP_Constants::PM_PTL_APDC, true)); /** * Action: 'pc_connection_init' - Action that is ran after the connection is initialized * * @api SP_Connection $connection The Connection */ $connection = apply_filters('pc_connection_init', $connection); } return $connection; }