taxonomie requête personnalisée par terme id?
-
16-10-2019 - |
Question
Je fait un type de poste personnalisé et une taxonomie personnalisée, mais j'ai un problème.
Quand j'accéder au http://www.ithemes.co.kr/?shopcat=galaxy-s
URL, il fonctionne bien. Mais quand j'accéder au http://www.ithemes.co.kr/?shopcat=5
url, il renvoie une page 404. galaxy-s
est la limace terme de taxonomie, mais je veux y accéder par term_id
, comme vous pouvez avec une catégorie: cat=1
. Je préfère cat=1
.
Que puis-je faire?
La solution
est pas pris en charge par défaut, mais vous pouvez convertir les termes numériques Retour aux limaces avec le crochet de pre_get_posts
. Je l'ai testé cela avec WP 3.0.1, mais en 3.1 la requête de taxonomie manipulation changé, donc je ne sais pas si cela fonctionnera par défaut ou s'il y a une meilleure façon de le faire.
add_action( 'pre_get_posts', 'wpse6066_pre_get_posts' );
function wpse6066_pre_get_posts( &$wp_query )
{
if ( $wp_query->is_tax ) {
if ( is_numeric( $wp_query->get( 'term' ) ) ) {
// Convert numberic terms to term slugs
$term = get_term_by( 'term_id', $wp_query->get( 'term' ), $wp_query->get( 'taxonomy' ) );
if ( $term ) {
$wp_query->set( 'term', $term->slug );
}
}
}
}
Bizarre que vous préférez la version numérique, beaucoup choisiraient la limace à long terme pour des raisons SEO.
Autres conseils
Ces quelques lignes sont très utiles pour wp_dropdown_categories
utilisés dans taxonomies personnalisées pour back-end (edit.php) liste sous-sélection. Parce que les valeurs de la liste sont term id
et non utilisables tout comme pour les sous sélection dans la requête. Les parties de code ci-dessous ont été utilisés dans une classe de gestion type personnalisé poste et taxonomie personnalisée.
add_action( 'restrict_manage_posts', array(&$this,'restrict_manage_writer_posts') );
add_action( 'pre_get_posts', array(&$this,'wpse6066_pre_get_posts' ) );
function restrict_manage_writer_posts () {
$selected = "";
if ( isset ( $_GET['writer_name'] ) ) {
$selected = $_GET['writer_name'];
}
$dropdown_options = array(
'taxonomy' => 'writer',
'show_option_all' => __( 'View all writers' ),
'hide_empty' => 0,
'hierarchical' => 1,
'show_count' => 0,
'orderby' => 'name',
'name' => 'writer_name',
'selected' => $selected
);
wp_dropdown_categories( $dropdown_options );
}
/**
* to fixes wp_dropdown_categories id value in option
* thanks to http://wordpress.stackexchange.com/questions/6066/query-custom-taxonomy-by-term-id
*/
function wpse6066_pre_get_posts( &$wp_query )
{
if ( $wp_query->is_tax ) { ;
if ( is_numeric( $wp_query->get( 'writer_name' ) ) ) {
// Convert numberic terms to term slugs for dropdown
$term = get_term_by( 'term_id', $wp_query->get( 'writer_name' ), 'writer' );
if ( $term ) {
$wp_query->set( 'writer_name', $term->slug );
}
}
}
}