• Resolvido joaocarloszen

    (@joaocarloszen)


    Bom dia, gostaria de criar uma taxonomy em produtos que me retornasse os produtos que já estão cadastrados ou os posts. Consegui criar a taxonomy sem vinculo algum:

    add_action(‘stm_cli_after_import_done’, ‘stm_cli_after_import’, 10, 2);
    function create_taxonomy_type() {
    register_taxonomy(
    ‘type_business’,
    ‘product’,
    array(
    ‘label’ => ‘Tipo de Negocio’,
    ‘rewrite’ => array( ‘slug’ => ‘tipo-negocio’ ),
    ‘hierarchical’ => true,
    )
    );
    }

    E consegui criar uma taxonomy nativa do wordpress:

    add_action( ‘init’, ‘testando’, 100 );
    function testando()
    {
    register_taxonomy_for_object_type( ‘category’, ‘product’ );

    Mas infelizmente não estou conseguinte criar uma que me trouxesse os produtos/posts já cadastrados. Alguém poderia me ajudar?

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • @joaocarloszen não sei se entendi bem o que precisa (se puder dar mais detalhe do que precisa, mais pessoas poderão ajudá-lo), de qualquer forma você pode dar uma olhada na documentação da função register_taxonomy() para entender melhor sua aplicação.

    Criador do tópico joaocarloszen

    (@joaocarloszen)

    Bom dia Everaldo,

    gostaria de criar uma taxonomy personalizada que trouxesse em um array a lista dos meus posts que eu pudesse escolher. Não sei se entendeu mais ou menos oque estou precisando?

    Criador do tópico joaocarloszen

    (@joaocarloszen)

    Gostaria de fazer um SELECT onde retornasse um array, e com este retorno inserisse dentro de uma taxonomy o resultado.

    @joaocarloszen confesso que ainda estou confuso. Por favor, me explica o que você pretende, independente dos termos do WordPress como taxonomia, post.. Ou então explica o projeto, por exemplo: Site de uma locadora de veículos, onde os veículos são classificados por marcas (o que pode der uma categoria) e então na home quero listar apenas os produtos da marca Chevrolet.

    Criador do tópico joaocarloszen

    (@joaocarloszen)

    Boa tarde @everaldomatias,

    consegui resolver do jeito que queri, irei postar a resolução a baixo:

    function prefix_register_featured_taxonomy_marcas() {

    $labels = array(
    ‘name’ => esc_html__( ‘Lista Marcas’, ‘text-domain’ ),
    ‘singular_name’ => esc_html__( ‘Lista Marcas’, ‘text-domain’ ),
    ‘all_items’ => esc_html__( ‘Todas as Marcas’, ‘text-domain’ ),
    );

    $args = array(
    ‘label’ => esc_html__( ‘Lista Marcas’, ‘text-domain’ ),
    ‘labels’ => apply_filters( ‘prefix_featured_taxonomy_labels’, $labels ),
    ‘public’ => false,
    ‘hierarchical’ => true,
    ‘show_ui’ => true,
    ‘show_in_rest’ => true,
    ‘show_in_menu’ => true,
    ‘show_in_nav_menus’ => true,
    ‘query_var’ => true,
    ‘rewrite’ => true,
    ‘show_admin_column’ => true,
    ‘show_in_quick_edit’ => true,
    ‘sort’ => true,
    ‘capabilities’ => array(
    ‘manage_terms’ => true,
    ‘edit_terms’ => true,
    ‘delete_terms’ => true,
    ),
    );

    register_taxonomy( ‘list_marcas’, array( ‘product’ ), apply_filters( ‘prefix_featured_taxonomy_args’, $args ) );
    }

    add_action( ‘init’, ‘prefix_register_featured_taxonomy_marcas’, 10 );

    function prefix_add_featured_terms() {

    global $wpdb;
    $taxonomies= $wpdb->get_results(“SELECT DISTINCT
    $wpdb->posts.ID,
    $wpdb->posts.post_date,
    $wpdb->posts.post_title,
    $wpdb->posts.post_name,
    $wpdb->terms.name Taxonomy,
    $wpdb->terms.slug
    FROM $wpdb->posts
    INNER JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id)
    INNER JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
    INNER JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
    INNER JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
    WHERE $wpdb->posts.post_status = ‘publish’
    and $wpdb->posts.post_type = ‘product’
    and $wpdb->terms.name = ‘Chevrolet’
    ORDER BY $wpdb->terms.name and $wpdb->posts.ID ASC
    “);

    $featured_terms = null;
    foreach ( $taxonomies as $taxonomie) {

    $featured_terms [$taxonomie->post_name] = esc_html__( $taxonomie->post_title, ‘text-domain’ );

    }

    foreach ( apply_filters( ‘prefix_featured_terms’, $featured_terms ) as $term => $name ) {
    if ( ! term_exists( $name, ‘list_marcas’ ) ) {
    wp_insert_term(
    $name, ‘list_marcas’, $args = array(
    ‘slug’ => $term,
    )
    );
    }
    }

    update_option( ‘prefix_featured_terms_added’, true );

    }

    add_action( ‘init’, ‘prefix_add_featured_terms’, 20 );

    • Esta resposta foi modificada 6 anos, 10 meses atrás por joaocarloszen.
    Criador do tópico joaocarloszen

    (@joaocarloszen)

    Isso eu fiz na function.php, irá aparecer uma taxonomy no admin dos posts com os dados dos carros vinculados naquela marca gravadas no banco e atualizar e trazer informações sozinho. Depois no content-single-product.php você lista estes carros, por exemplo no meu caso realizo uma condição que toda vez que alguém estiver visualizando um carro da Chevrolet, uma lista de carros da Chevrolet aparece logo a baixo.

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • O tópico ‘Criar taxonomy com posts/produtos’ está fechado para novas respostas.