{"id":195,"date":"2009-03-27T07:24:10","date_gmt":"2009-03-27T06:24:10","guid":{"rendered":"http:\/\/vince.tikasz.hu\/?p=195"},"modified":"2011-07-24T15:11:56","modified_gmt":"2011-07-24T13:11:56","slug":"extra-css-classok-wordpress-widgetekre","status":"publish","type":"post","link":"https:\/\/vince.tikasz.hu\/2009\/03\/27\/extra-css-classok-wordpress-widgetekre\/","title":{"rendered":"Extra CSS classok be\u00e1ll\u00edt\u00e1sa WordPress widgetekre"},"content":{"rendered":"

T\u00f6bbsz\u00f6r is felmer\u00fclt m\u00e1r, egy-egy WordPress sablon fejleszt\u00e9sekor, hogy a widget-eket, a sidebar regisztr\u00e1l\u00e1sakor megadott CSS oszt\u00e1lyok mellet, tov\u00e1bbi oszt\u00e1lyokkal is felruh\u00e1zzam. J\u00f3 lett volna megjel\u00f6lni pl. az els\u0151t, az utols\u00f3t, vagy minden m\u00e1sodikat, harmadikat. A legutols\u00f3 munk\u00e1mn\u00e1l egyszer\u0171en nem tal\u00e1ltam ker\u00fcl\u0151 megold\u00e1st, elengedhetetlenn\u00e9 v\u00e1lt ennek a megval\u00f3s\u00edt\u00e1sa.
\n
\nA WP widgetek\u00e9rt felel\u0151s k\u00f3djait v\u00e9gigbogar\u00e1szva bukkantam a dynamic_sidebar_params<\/code> filter tag-ra. Ezen a ponton lehet a widget-ek \u00e1ltal is megkapott param\u00e9tereken sz\u0171r\u0151 f\u00fcggv\u00e9nyeket futtatni. L\u00e1ssuk a k\u00f3dot:<\/p>\n

<?php\r\nfunction widget_param_filter( $params ) {\r\n    $id = $params[0]['id'];\r\n    static $counter;\r\n    static $counts;\r\n    if ( is_null( $counter ) ) {\r\n        $counter = array();\r\n    }\r\n    if ( is_null( $counts ) ) {\r\n        $counts = array();\r\n        $sidebars_widgets = wp_get_sidebars_widgets();\r\n   \u00a0    foreach ( $sidebars_widgets as $sidebar_id => $widgets ) {\r\n   \u00a0   \u00a0    $counts[ $sidebar_id ] = count( $widgets );\r\n   \u00a0    }\r\n    }\r\n    if ( !isset( $counter[ $id ] ) ) {\r\n   \u00a0    $counter[ $id ] = 0;\r\n    }\r\n    $count = $counter[ $id ];\r\n    $class = array();\r\n    $m = array();\r\n    $alowedQuotes = \"['\\\"]\";\r\n    if ( preg_match( '\/\\sclass=('.$alowedQuotes.')(?P<class>.*?)\\\\1\/', $params[0]['before_widget'], $m ) ) {\r\n   \u00a0    $class = array( $m['class'] );\r\n    }\r\n    if ( $count == 0 ) {\r\n   \u00a0    $class[] = 'first';\r\n    }\r\n    if ( $count + 1 == $counts[ $id ] ) {\r\n   \u00a0    $class[] = 'last';\r\n    }\r\n    $class[] = ( $count % 2 ) ? 'odd' : 'even';\r\n    switch ( $count % 3 ) {\r\n   \u00a0    case '0' : $class[] = 'one-thirds'; break;\r\n   \u00a0    case '1' : $class[] = 'two-thirds'; break;\r\n   \u00a0    case '2' : $class[] = 'three-thirds'; break;\r\n    }\r\n    switch ( $count % 4 ) {\r\n   \u00a0    case '0' : $class[] = 'one-fourth'; break;\r\n   \u00a0    case '1' : $class[] = 'two-fourth'; break;\r\n   \u00a0    case '2' : $class[] = 'three-fourth'; break;\r\n   \u00a0    case '3' : $class[] = 'four-fourth'; break;\r\n    }\r\n    if ( count( $m['class'] ) &gt; 0 ) {\r\n   \u00a0    $params[0]['before_widget'] = preg_replace( '\/\\sclass=('.$alowedQuotes.').*?\\\\1\/', '', $params[0]['before_widget'], 1 );\r\n    }\r\n    elseif ( preg_match( '\/< \\w+\/', $params[0]['before_widget'] ) ) {\r\n   \u00a0    $params[0]['before_widget'] = preg_replace( '\/<(\\w)+\/', '<$1', $params[0]['before_widget'], 1 );\r\n    }\r\n    else {\r\n   \u00a0    $params[0]['before_widget'] = '<div>';\r\n   \u00a0    $params[0]['after_widget'] .= '';\r\n    }\r\n    $counter[ $id ]++;\r\n    return $params;\r\n}\r\nadd_filter( 'dynamic_sidebar_params', 'widget_param_filter' );<\/pre>\n

A k\u00e9t static<\/code> v\u00e1ltoz\u00f3t haszn\u00e1ljuk sz\u00e1mol\u00e1sra. A f\u00fcggv\u00e9ny els\u0151 h\u00edv\u00e1sakor \u00e1ll\u00edt\u00f3dik be a $counter<\/code> v\u00e1ltoz\u00f3 \u00e9rt\u00e9ke, mely egy, a regisztr\u00e1lt oldals\u00e1vokban tal\u00e1lhat\u00f3 elemek sz\u00e1m\u00e1t tartalmazz\u00f3 t\u00f6mb. A $counts<\/code> is egy t\u00f6mb, melyben azt tartjuk ny\u00edlv\u00e1n, hogy adott oldals\u00e1vban \u00e9ppen hanyadik widget-et b\u0151v\u00edtj\u00fck.<\/p>\n

Ezut\u00e1n kinyerj\u00fck az eddig be\u00e1ll\u00edtott oszt\u00e1lyokat, \u00e9s elkezdj\u00fck \u00f6sszeszedni a sorban elfoglalt hely szerintieket. Ha az aktu\u00e1ls sz\u00e1ml\u00e1l\u00f3 nulla, akkor ez az els\u0151, ha egyel kisebb mint az elemek sz\u00e1ma akkor ez az utols\u00f3. Ha a sz\u00e1ml\u00e1l\u00f3 \u00e9rt\u00e9ke oszthat\u00f3 kett\u0151vel akkor p\u00e1ros (odd), ha nem akkor p\u00e1ratlan (even). M\u00e9g meg\u00e1llap\u00edtja hanyadik harmad, \u00e9s hanyadik negyedn\u00e9l j\u00e1r.<\/p>\n

Utols\u00f3 l\u00e9p\u00e9sben lecser\u00e9lj\u00fck az eddigi oszt\u00e1lyokat az \u00f6sszeszedettre. Ha nincs be\u00e1ll\u00edtva semmilyen oszt\u00e1ly, akkor a legk\u00fcls\u0151 HTML tag kapja meg mint \u00faj attributumot. Ha a hat\u00e1rol\u00f3 k\u00f3d \u00fcres, akkor be\u00e1ll\u00edtunk egy div<\/code> elemet az el\u0151bb \u00f6sszeszedett oszt\u00e1lyokkal (\u00e9s egy\u00fattal a z\u00e1r\u00f3t is b\u0151v\u00edtj\u00fck, az el\u0151bbi div z\u00e1r\u00f3 fel\u00e9vel).<\/p>\n

Ezt a k\u00f3dot a haszn\u00e1lt t\u00e9ma functions.php \u00e1llom\u00e1ny\u00e1ba kell elhelyezni<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"

T\u00f6bbsz\u00f6r is felmer\u00fclt m\u00e1r, egy-egy WordPress sablon fejleszt\u00e9sekor, hogy a widget-eket, a sidebar regisztr\u00e1l\u00e1sakor megadott CSS oszt\u00e1lyok mellet, tov\u00e1bbi oszt\u00e1lyokkal is felruh\u00e1zzam. J\u00f3 lett volna megjel\u00f6lni pl. az els\u0151t, az utols\u00f3t, vagy minden m\u00e1sodikat, harmadikat. A legutols\u00f3 munk\u00e1mn\u00e1l egyszer\u0171en nem … Continue reading →<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,28,13,15],"tags":[63,83,68,77],"_links":{"self":[{"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/posts\/195"}],"collection":[{"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/comments?post=195"}],"version-history":[{"count":0,"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/posts\/195\/revisions"}],"wp:attachment":[{"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/media?parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/categories?post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vince.tikasz.hu\/wp-json\/wp\/v2\/tags?post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}