Wordpress / Woocommerce Мои учетные записи Подстраницы - PullRequest
0 голосов
/ 05 марта 2020

Я создал рабочую вкладку пользовательской страницы (меню), используя все соответствующие функции, действия / фильтры, которые я настроил, и она работает как задумано, и теперь я хочу добавить дополнительные дочерние / подстраницы в настройку процесса как https://www.website.com/myaccount/books/ включить https://www.website.com/myaccount/books/create/ и /modify/abc123/.

Очевидно, что это интерфейсная функция, и я прошу помощи сообщества SE, чтобы найти лучший способ продолжить.

my-account-books. php

global $current_user;

$query_var = get_query_var( 'books' );

if ( !empty ( $query_var ) ) {

    if ( $query_var == 'create' ) {

        var_dump( $query_var ); // Returns: string(6) "create"
        // Output Code
    }

    if ( $query_var == 'modify' ) {

        var_dump( $query_var ); // Returns: string(6) "modify"
        // Output Code

    }

    if ( $query_var == 'modify/' . <<this value>> ) {

        // Output Code
}

elseif ( empty ( $query_vars ) ) {

    /* The below code works, I just added it to show the process.
       I want to use the identical code in standalone /modify/.
       I was thinking about using get_template_path('partials/books'); 
    */

    $args = array ( 
    'post_type' => '1234_books',
    'post_status' => array( 'publish', 'pending' ),
    'author' => $current_user->ID, 
    'order' => 'ASC'
    );

    $query = new WP_Query( $args );

    if( $query->have_posts() ) :

        while ( $query->have_posts() ) : $query->the_post();

            /* Code has been removed to simplify post and 
               not relevant to this enquiry */

            if ( has_post_thumbnail() ) {

                the_post_thumbnail ( array( 150, 150 ) );

            }
            else {

                // Placeholder (300 x 300)

            }

        endwhile;

    endif;

}

Бит, с которым у меня возникают проблемы, - это, например, разделение query_var внутри URL, если адрес .../modify/abc123/ результат query_var string(13) modify/abc123", и мне нужно извлечь abc123. Будет ли использование explode( '/' $query_var ) лучшим вариантом в этом сценарии? А затем выполните $mod_query = new WP_Query..., чтобы извлечь 'abc123' из query_var и затем отобразить l oop на основе возвращенной информации, или есть другой способ, которым я могу добиться этого? Кроме того, является ли предоставленный код наиболее эффективным способом выполнения этой задачи в целом?

Спасибо.

== ОБНОВЛЕНИЕ ==

Я закончил тем, что использовал это для кода, и это работает, но это лучший способ выполнить эту конкретную задачу?

$query_var = get_query_var( 'books' );

$book_id = explode( '/', $query_var );

if ( empty ( $book_id[0] ) || ( !isset ( $book_id[0] ) ) ) :

    echo 'Book Dashboard';
    // Code Goes Here

elseif ( !empty ( $book_id[0] ) && ( $book_id[0] == 'add' ) ) :

    echo 'Add Book';
    // Code Goes Here.

elseif ( !empty ( $book_id[0] ) && ( $book_id[0] == 'modify' ) ) :

    if ( !isset ( $book_id[1] ) ) :

        echo 'Modify Book. No ID Provided';
        // Code Goes Here.

    elseif ( isset ( $pet_id[1] ) ) :

        echo 'Modify Book. Book ID: ' . $book_id[1];
        // Code Goes Here.

    endif;

elseif ( !empty ( $book_id[0] ) && ( $book_id[0] == 'remove' ) ) :

    echo 'Remove Book';
    // Code Goes Here.

endif;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...