array( ‘name’ => __(‘Petitions’), ‘singular_name’ => __(‘Petition’) ), ‘public’ => true, ‘has_archive’ => true, ‘supports’ => array(‘title’, ‘editor’, ‘thumbnail’, ‘custom-fields’), ‘rewrite’ => array(‘slug’ => ‘petitions’), ) ); } add_action(‘init’, ‘create_petition_post_type’); // Create Petition Submission Form Shortcode function petition_submission_form() { ob_start(); ?>

Start a Petition

sanitize_text_field($_POST[‘petition_title’]), ‘post_content’ => sanitize_textarea_field($_POST[‘petition_description’]), ‘post_type’ => ‘petition’, ‘post_status’ => ‘pending’, ‘meta_input’ => array( ‘target’ => sanitize_text_field($_POST[‘petition_target’]) ) ); $post_id = wp_insert_post($new_petition); if (!empty($_FILES[‘petition_image’][‘name’])) { require_once(ABSPATH . ‘wp-admin/includes/image.php’); require_once(ABSPATH . ‘wp-admin/includes/file.php’); require_once(ABSPATH . ‘wp-admin/includes/media.php’); $attachment_id = media_handle_upload(‘petition_image’, $post_id); if (!is_wp_error($attachment_id)) { set_post_thumbnail($post_id, $attachment_id); } } echo ‘

Petition submitted for review!

‘; } return ob_get_clean(); } add_shortcode(‘petition_form’, ‘petition_submission_form’); // Display List of Petitions function display_petitions() { $args = array( ‘post_type’ => ‘petition’, ‘posts_per_page’ => 10, ‘post_status’ => ‘publish’ ); $query = new WP_Query($args); ob_start(); if ($query->have_posts()) { echo ‘
‘; echo ‘

Active Petitions

‘; echo ‘‘; echo ‘
‘; } else { echo ‘

No petitions found.

‘; } wp_reset_postdata(); return ob_get_clean(); } add_shortcode(‘petition_list’, ‘display_petitions’); ?>