Snippety

Zobrazení widgetu na stránce

Autor příspěvku Tomáš Cirkl

Tento článek je součástí série návodů zabývající se kompletní tvorbou WordPress widgetu.

  1. Co byste měli vědět než se pustíte do tvorby prvního widgetu
  2. Tvorba a registrace WordPress widgetu
  3. Tvorba samotného widgetu
  4. Tvorba formuláře pro váš WordPress widget
  5. Zobrazení widgetu na stránce

Kódování výstupu widgetu

Tento krok se skládá ze dvou částí:

  1. Přidání výstupní funkce do widgetu. Tato funkce bude identifikovat nadřazené stránky (rodiče).
  2. Úprava funkce widgetu uvnitř třídy WP_Widget.

Přidání funkce pro identifikace rodiče

Do souboru pluginu, nad vaší třídu WP_Widget přidejte tuto funkci:

 

<?php

 

function tutsplus_check_for_page_tree() {

 

 

    // zkontroluje, zda se nacházíte na stránce

 

    if( is_page() ) {

 

    

 

        global $post;

 

    

 

        // kontroluje, zda má stránka rodiče

 

        if ( $post->post_parent ){

 

        

 

            // načte seznam rodičů

 

            $parents = array_reverse( get_post_ancestors( $post->ID ) );

 

            

 

            // najde nejvýše postaveného rodiče

 

            return $parents[0];

 

            

 

        }

 

        

 

        // navrátí ID - toto bude nejvýše postavený rodič nebo ID současné stránky

 

        return $post->ID;

 

        

 

    }

 

 

}

 

?>

 

Funkce pro úpravu nastavení widgetu

Dalším krokem je úprava zatím prázdné funkce widgetu. Začneme definováním proměnných, které jsou založené na vstupním formuláři.

function widget( $args, $instance ) {

 

    

 

    extract( $args );

 

    echo $before_widget;       

 

    echo $before_title . 'In this section:' . $after_title;

 

 

}

Dále přidejte dotaz a jeho výstup do funkce widget:

 

function widget( $args, $instance ) {

 

    

 

    // kick things off

 

    extract( $args );

 

    echo $before_widget;       

 

    echo $before_title . 'In this section:' . $after_title;    

 

    

 

    // run a query if on a page

 

    if ( is_page() ) {

 

 

        // run the tutsplus_check_for_page_tree function to fetch top level page

 

        $ancestor = tutsplus_check_for_page_tree();

 

 

        // set the arguments for children of the ancestor page

 

        $args = array(

 

            'child_of' => $ancestor,

 

            'depth' => $instance[ 'depth' ],

 

            'title_li' => '',

 

        );

 

        

 

        // set a value for get_pages to check if it's empty

 

        $list_pages = get_pages( $args );

 

        

 

        // check if $list_pages has values

 

        if( $list_pages ) {

 

 

            // open a list with the ancestor page at the top

 

            ?>

 

            <ul class="page-tree">

 

                <?php // list ancestor page ?>

 

                <li class="ancestor">

 

                    <a href="<?php echo get_permalink( $ancestor ); ?>"><?php echo get_the_title( $ancestor ); ?></a>

 

                </li>

 

                

 

                <?php

 

                // use wp_list_pages to list subpages of ancestor or current page

 

                wp_list_pages( $args );;

 

            

 

    

 

            // close the page-tree list

 

            ?>

 

            </ul>

 

    

 

        <?php

 

        }

 

    }

 

 

    

 

}

Toto zkontroluje jestli jste na stránce a poté definuje argumenty pro funkci list_pages(). K tomu se použije předchozí funkce a hodnoty $depth, která je nastavená ve formuláři widgetu. Nyní vše uložte a aktualizujte plugin na stránce.

Shrnutí

Tvorba widgetu zahrnuje tyto kroky:

    • Registrace widgetu.

 

  • Tvorba třídy, která obsahuje funkce widgetu.

 

 

  • Napsání funkce construct, která sestavuje widget.

 

 

  • Napsání funkce form, která obsahuje formulář widgetu.

 

 

  • Napsání funkce update, která ukládá nastavení formuláře.

 

 

  • Napsání funkce widget, která obsahuje výstup.

 

 

Jakmile máte všechno hotové, máte funkční widget, který můžete upravit tak, aby dělal co chcete.

Celý kód pluginu

Zdroj: Displaying Your WordPress Widget on the Site

O autorovi

Tomáš Cirkl

Baví mě Internet a zvláště pak redakční systém WordPress. Jsem pravidelným účastníkem a přednášejícím na WordCamp Praha a WordPress konferencích.

3 komentáře

  • Ahoj, řeším teď takový problém: Mám proměnnou ve “function form($instance) {}” a chtěl bych s ní pracovat ve “function widget($args, $instance) {}”. Zkoušel jsem to pomocí globálních proměnných, ale nefungovalo mi to. Jsem v PHP začátečník, tak jsem to asi špatně napsal. Nemůžete mi prosím někdo pomoci? Předem děkuji 🙂

    • Ahoj. Poradit určitě můžeme. Potřeboval bych ale ten tvůj kód vidět. Pokud není moc dlouhý tak ho sem hoď a něco vymyslíme.

Zanechat komentář

Přijďte 1.11. na naše WordPress Školení

Získejte více informací o WordPress!

Připojte se do našeho emailového seznamu a nenechte si ujít informace, novinky a návody ze světa WordPressu.

Úspěšně jste se zapsali do našeho newsletteru. Děkujeme!