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?

Était-ce utile?

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 );
                }
            }
        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top