WordPress

Nie można pobrać wtyczki, aby dodać obraz do galerii modułów

  • 17 stycznia, 2023
  • 3 min read
Nie można pobrać wtyczki, aby dodać obraz do galerii modułów


Próbuję stworzyć wtyczkę, która stworzyłaby nową stronę dla mojej witryny w portfolio klienta. Dodaje logo do biblioteki obrazów i poprawnie tworzy stronę dla klienta, jednak nie mogę go zmusić do dodania logo klienta do galerii modułów połączonej ze stroną klienta, tak że po kliknięciu logo przenosi użytkownika do właściwa strona.

Oto mój kod:

<?php
/*
Plugin Name: Clients Page
Description: Allows you to add a client to the website's clients page.
Version: 1.0
*/

if( !function_exists('add_client_to_clients_page') ) {
    function add_client_to_clients_page() {
        if( isset($_POST['client_name']) && isset($_FILES['client_logo']) ) {
            // Get the client name and logo
            $client_name = sanitize_text_field( $_POST['client_name'] );
            $client_logo = $_FILES['client_logo'];
            
            // Upload the logo to the media library
            $logo_id = upload_image_to_media_library($client_logo);
            
            // Add the logo to the Modula gallery
            add_image_to_modula_gallery($logo_id);
            
            // Create the page for the client
            create_client_page($client_name);
        }
    }
}

if( !function_exists('upload_image_to_media_library') ) {
    function upload_image_to_media_library($logo) {
        // Upload the logo to the media library
        $uploaded_file = wp_handle_upload($logo, array('test_form' => false));
        
        $wp_filetype = wp_check_filetype(basename($uploaded_file['file']), null);
        
        $attachment = array(
            'post_mime_type' => $wp_filetype['type'],
            'post_title' => preg_replace('/\.[^.]+$/', '', basename($uploaded_file['file'])),
            'post_content' => '',
            'post_status' => 'inherit'
        );
        
        $attachment_id = wp_insert_attachment($attachment, $uploaded_file['file']);
        
        // Generate the attachment meta data
        $attachment_data = wp_generate_attachment_metadata($attachment_id, $uploaded_file['file']);

        // Update the attachment meta data
        wp_update_attachment_metadata($attachment_id, $attachment_data);
        
        return $attachment_id;
    }
}

if( !function_exists('add_image_to_modula_gallery') ) {
    function add_image_to_modula_gallery($logo_id) {
        // Get the Modula gallery ID
        $gallery_id = 190;
        
        // Add the logo to the Modula gallery
        $args = array(
            'post_type' => 'modula-gallery',
            'post_status' => 'publish',
            'post_title' => 'logo',
            'post_content' => '',
            'meta_input' => array(
                'gallery_id' => $gallery_id,
                'image_url' => wp_get_attachment_url($logo_id)
            )
        );
        wp_insert_post( $args );
    }
}

if( !function_exists('create_client_page') ) {
    function create_client_page($name) {
        $args = array(
            'post_type' => 'page',
            'post_status' => 'publish',
            'post_title' => $name,
            'post_content' => '',
            'post_parent' => get_page_by_title('Klienci')->ID
        );
        wp_insert_post( $args );
    }
}

// Hooks
add_action('admin_menu', 'add_clients_page_menu');
function add_clients_page_menu() {
    add_menu_page('Clients Page', 'Clients Page', 'manage_options', 'clients_page', 'add_client_to_clients_page_callback', 'dashicons-groups', 81);
}

// View
function add_client_to_clients_page_callback() {
  if ( !current_user_can( 'manage_options' ) )  {
    wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
  }
  
  echo '<div class="wrap">';
  echo '<h1>Add Client to Clients Page</h1>';
  echo '<form method="post" enctype="multipart/form-data" action="">';
  echo '<p>';
  echo 'Client Name: <br/>';
  echo '<input type="text" name="client_name" /> <br/>';
  echo 'Client Logo: <br/>';
  echo '<input type="file" name="client_logo" /> <br/>';
  echo '<input type="submit" value="Add Client" />';
  echo '</p>';
  echo '</form>';
  echo '</div>';
}

// Processing
add_action('admin_init', 'add_client_to_clients_page');

?>

Każda pomoc byłaby bardzo mile widziana.

Warto przeczytać!  Co naprawdę oznacza zakończenie fazy Gutenberga? – Wiadomości WordPressa


Źródło