Suport » Probleme și soluții » Custom post nu se afiseaza in browser.

  • Rezolvat MSteel

    (@msteel)


    Problema mea 🙂
    Sunt nou pe WordPress. Invat dintr-o carte, WordPress Web Application Development. Ce vreau sa fac.. Adaug un plugin nou, Questions. Creez un custom post type( folosind register_post_type(). Codul este cel default ( in mare ). Pluginul asta imi permite sa adaug ( ca si admin ) niste intrebari( ca si cum ar fi posturi standard), la care vreau sa pot raspunde prin commment-uri la ele. Ideea finala ar fi sa creez o pagina gen stackoverflow. ( intrebare, apoi.. raspunsuri la intrebare ). Treaba se mai complica, dar eu ma impiedic la inceput. Nu mi se afiseaza intrebarile in locul posturilor default. As vrea, daca cineva poate, sa imi ofere un sfat legat de treaba asta. E ceva ce-mi scapa. Poate fi vorba de „The Loop”.. sunt chiar la inceput, am experienta destul de putina in php, insa.. nu ma las :).

Vizualizare 8 răspunsuri - 1 la 8 (din 8 în total)
  • Moderator jnhghy

    (@jnhghy)

    un post are mai multe parti/caracteristici/… din ce descrii tu si din comparatia cu stackoverflow titlu intrebarii trebuie salvat ca titlu’ custom post type-ului iar intrebarea este continutul cpt-ului mai departe commenturile raman default.
    Cam asta pare a fi, trebuie sa citesti cele doua valori in 2 variabile si sa faci ori un insert de post ori un update… depinde la ce punct creezi post-ul nou.
    Stiu ca raspunsul nu este foarte exact, daca nu te simti pe drumul cel bun continua cu intrebari si iti voi raspunde!

    Salut,

    Sa inteleg ca vrei sa folosesti un custome post type pentru a afisa acele intrebari? Daca da, atunci ar trebui sa faci doua fisiere unul pentru afisare posturi, gen template-nume-post-type.php si single-nume-post-type.php link pentru mai multe info.

    Multumesc pentru raspunsuri. O sa incerc sa fiu mai explicit ( stiu ca nu prea sunt, daca as sti sa pun exact intrebarea, atunci probabil as gasi si raspunsul ).
    Buun…
    O sa imi permit sa pun si un pic de cod, sper sa ajute cat de cat ..
    eu am pluginul meu, denumit Questions, care, contine la baza un fisier, index.php. In fisierul asta, am declarate niste functii.
    Una se numeste function register_wp_questions()
    {
    aici intra $labels, $args, la final
    register_post_type(‘wp_question’, $args);
    }
    add_action(‘init’, ‘register_wp_questions’); // si asta inaintea functiei.

    De atat am nevoie sa-mi construiesc pluginul meu, denumit Questions.
    Intru in dashboard, il activez, si pot scrie intrebari ( ca si cum ar fi posturi ). Cum fac sa mi le afiseze in pagina ? ( ca pe un post normal? ).

    Salut,

    Daca pluginul tau e facut pe baza unui custome post type atunci e destul de simplu sa-l afisezi..

    <?php $args = array(
                    'post_type' => 'nume-post-type',
                    'orderby' => 'date',
                    'order' => 'DESC',
                    'posts_per_page' => 4
    		   );
    		   $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); ?>
    
    <?php the_content() ?>
    
    <?php endwhile; ?><?php wp_reset_postdata(); ?>

    Asa este.

    add_action('init', 'register_wp_questions');
    
    function register_wp_questions()
    {
        $labels = array(
            'name' => __('Questions', 'wp_question'),
            'singular_name' => __('Question', 'wp_question'),
            'add_new' => __('Add New', 'wp_question'),
            'add_new_item' => __('Add New Question', 'wp_question'),
            'edit_item' => __('Edit Questions', 'wp_question'),
            'new_item' => __('New Question', 'wp_question'),
            'view_item' => __('View Question', 'wp_question'),
            'search_items' => __('Search Questions', 'wp_question'),
            'not_found' => __('No Questions found', 'wp_question'),
            'not_found_in_trash' => __('No Questions found in trash', 'wp_question'),
            'parent_item_colon' => __('Parent Question:', 'wp_question'),
            'menu_name' => __('Questions', 'wp_question')
        );
        $args = array(
            'labels' => $labels,
            'hierarchical' => true,
            'description' => __('Questions and Answers', 'wp_question'),
            'supports' => array('title', 'editor', 'comments'),
            'public' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'show_in_nav_menus' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'has_archive' => true,
            'query_var' => true,
            'can_export' => true,
            'rewrite' => true,
            'capability_type' => 'post',
            'map_meta_cap' => true
    
        );
        register_post_type('wp_question', $args);

    Asta este functia care creaza custom post-ul.
    Apoi, trebuie sa mentionez ca folosesc ca si tema default twentytwelve.

    Faci un fisier nou in interiorul temei ce-nume-vrei-tu.php dupa care adaugi codul asta:

    <?php
    /*
    Template Name: Ce nume vrei tu
    */
    ?>
    
    <?php get_header(); ?>
    
    <?php $args = array(
                    'post_type' => 'question',
                    'orderby' => 'date',
                    'order' => 'DESC',
                    'posts_per_page' => 4
    		   );
    		   $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); ?>
    
    <?php the_content() ?>
    
    <?php endwhile; ?><?php wp_reset_postdata(); ?>
    
    <?php get_footer(); ?>

    Faci o pagina noua, iar din meniul page attributes alegi „Template Name: Ce nume vrei tu”.
    Daca vrei sa faci ceva mai complex apuca-te si invata codex wordpress

    Ok. Multumesc pentru raspunsuri, si pentru implicare :).
    Deja m-am apucat sistematic de codex.

    Topic rezolvat 🙂

Vizualizare 8 răspunsuri - 1 la 8 (din 8 în total)
  • Subiectul ‘Custom post nu se afiseaza in browser.’ este închis pentru noi răspunsuri.