Перенаправить на последний пользовательский тип сообщения в Wordpress - PullRequest
0 голосов
/ 23 февраля 2020

На моем сайте Wordpress я пытаюсь создать ссылку http://url.com/episode/?latest, которая перенаправляет на последний «эпизод» (пользовательский тип записи). Я изменил этот фрагмент кода следующим образом:

//* Link to Latest Episode
function wpa_latest_episode_redirect( $request ){
    if( isset( $_GET['latest'] ) ){

        $latest = new WP_Query( array(
            'taxonomy' => 'episode',
            'posts_per_page' => 1
        ) );
        if( $latest->have_posts() ){
            wp_redirect( get_permalink( $latest->post->ID ) );
            exit;
        }

    }
}
add_action( 'parse_request', 'wpa_latest_episode_redirect' );

Однако я получаю эту ошибку:

syntax error, unexpected ''taxonomy'' (T_CONSTANT_ENCAPSED_STRING), expecting ')'

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Спасибо, это помогло! Я смог использовать это, что сработало, потому что я применяю категории к пользовательскому типу записи:

//* Link to Latest in Category
function wpa_latest_in_category_redirect( $request ){
    if( isset( $_GET['latest'] )
        && isset( $request->query_vars['category_name'] ) ){

        $latest = new WP_Query( array(
            'category_name' => $request->query_vars['category_name'],
        'post_type'      => array( 'episode' ),
            'posts_per_page' => 1
        ) );
        if( $latest->have_posts() ){
            wp_redirect( get_permalink( $latest->post->ID ) );
            exit;
        }

    }
}
add_action( 'parse_request', 'wpa_latest_in_category_redirect' );
0 голосов
/ 24 февраля 2020

когда я смотрю на Документы , я думаю, что ошибка заключается в том, что 'таксономия' должна иметь имя таксономии, например

$latest = new WP_Query( array(
        'videos' => 'episode',
        'posts_per_page' => 1
    ) );

, но

Устаревший с версии 3.1 в пользу 'tax_query'

, поэтому вы должны использовать

$latest = new WP_Query( array(
        'tax_query' => array(
          'taxonomy' => 'episode'
         ),
        'posts_per_page' => 1
    ) );

Однако, поскольку вы говорите, что "эпизод" - это не таксономия, а пользовательский тип post_type, может быть, это будет работать для вас:

$latest = new WP_Query( array(
        'post_type' => 'episode',
        'posts_per_page' => 1
    ) );
...