Como verificar se uma página específica usa um modelo de página?

Estou tentando obter uma página que use um modelo específico. Eu tenho o page_id. Aqui está o meu código:

$pids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_author = %d AND post_status = 'publish' AND post_type='page'", $user->ID ) ); foreach($pids as $post_id) { wp_set_post_terms( $post_id, $tag, $taxonomy ); // I need permalink only if that page use a specific template (say blog.php) $permalink_n = get_permalink($post_id); set_cimyFieldValue( $user_id, 'HOMEPAGE', $permalink_n ); } 

Solutions Collecting From Web of "Como verificar se uma página específica usa um modelo de página?"

O modelo da página está configurado em um campo meta pós '_wp_page_template' , então, em vez de usar a consulta $wpdb , você pode executar um WP_Query usando 'author' argumento 'author' e meta_query para recuperar páginas de um autor específico que também possui modelos específicos:

 $q = new WP_Query( array( 'author' => $user->ID, 'post_type' => 'page', 'meta_query' => array( array('key' => '_wp_page_template', 'value' => 'blog.php') ) ) ); if ( $q->found_posts > 0 ) { foreach ( $q->posts as $post ) { // all pages returned have the template `'blog.php'` wp_set_post_terms( $post->ID, $tag, $taxonomy ); $permalink_n = get_permalink($post); set_cimyFieldValue( $user->ID, 'HOMEPAGE', $permalink_n ); } } 

Se você quiser recuperar todas as páginas de um autor, mas fazer algo para todas as páginas e outra coisa apenas para algumas outras páginas, você pode

 $q = new WP_Query( array( 'author' => $user->ID, 'post_type' => 'page' ) ); if ( $q->found_posts > 0 ) { foreach ( $q->posts as $post ) { wp_set_post_terms( $post->ID, $tag, $taxonomy ); $template = get_post_meta( $post->ID, '_wp_page_template', true ); if ( $template === 'blog.php' ) { $permalink_n = get_permalink($post); set_cimyFieldValue( $user->ID, 'HOMEPAGE', $permalink_n ); } } }