Ondersteuning » Code oplossingen gezocht » Get Post ID in wordpress sidebar wil niet lukken

  • Hallo mensen,

    Waarschijnlijk is het maar een kleine wijziging in de code, maar ik kom er zelf maar niet achter.

    Overal op mijn wordpress website wordt de post-id herkend. Behalve in de sidebars.php. De post id (in combinatie met de meta id van wordpress) moet voor class achtervoegsel zorgen.

    Voor het overzicht heb ik hieronder een overzicht gemaakt van de code die sidebars.php aanroepen.

    require_once(TEMPLATEPATH . '/epanel/custom_functions.php'); 
    
    require_once(TEMPLATEPATH . '/includes/functions/comments.php');
    
    require_once(TEMPLATEPATH . '/includes/functions/sidebars.php');

    Functions.php van wordpress roept Sidebars.php aan.

    <?php global $wp_query;
    $ID = $wp_query->post->ID; 
    
    $biglayout = ((bool) get_post_meta($post->ID, 'et_bigpost', true)) ? true : false; echo $post->ID;
    
    $layout = ($biglayout==true)? "big" : "small" ;
    
    if ( function_exists('register_sidebar') )
        register_sidebar(array(
            'name' => 'Sidebar',
            'before_widget' => '<div id="widgetborder"><div id="%1$s" class="widget %2$s  '.$layout.'   ">',
            'after_widget' => '</div></div></div><!-- end .widget -->',
            'before_title' => '<h3 class="widgettitle '.$layout.' ">',
            'after_title' => '</h3><div class="widgetcontent">',
        )); ?>

    Sidebars.php. Dit is het bestandje waar alles in misgaat. Hier wordt de post-id opgeroepen en deze zou de class achter de widgets in de sidebar moeten verzorgen. Bij echo $ID; wordt niets teruggegeven.

    <div id="sidebar">
    
            <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar') ) : ?>
            <?php endif; ?>
    
        </div> <!-- end #sidebar -->

    Single.php hier wordt de bovenstaande sidebar aangeroepen.

    Het gaat om deze website:
    Om de class te checken ga ik altijd naar
    Als de class zou werken, zouden de geeltjes rechts namelijk grijs moeten worden.

    Het vreemde is…als ik de code van sidebars.php volledig kopieer en tussen de code van single.php plaats, wordt de post-id wel gevonden. Maar dan worden de sidebars in de wordpress administrator niet meer herkend.

    Wie kan mij helpen?

4 reacties aan het bekijken - 16 tot 19 (van in totaal 19)
  • Nee alles wat met die code te maken heeft kun je vergeten, je hoeft niet meer te denken in Post ID’s toevoegen aan de sidebar.

    Je kan gewoon 1 Sidebar gebruiken voor alle Post Formats.

    Wat je nu moet doen is verder werken in format-status.php, eigenlijk moet je daar al een gedeelte van de Sidebar in zetten zodat de Sidebar alleen nog maar de Widgets hoeft te printen. Deze kun je ook niet erin plaatsen omdat deze door WP erin gezet worden.

    Dit is wat WP standaard doet in het single.php (ongeveer)

    <section id="content">
    <article>
     - Hier komt alles wat met de Blog Post te maken heeft
    </article>
    
    <?php get_sidebar(); ?>
    </section>
    <?php get_footer(); ?>

    Dit is wat jij moet doen:

    <section id="content">
    <article>
     - Hier komt alles van je Blog Post en Post Format -
    </article>
    
    <aside class="yellow">
         <?php get_sidebar(); ?>
    </aside>
    </section>
    <?php get_footer(); ?>

    Zie je dat ik de sidebar nu al een class heb gegeven genaamd Yellow die kan ik aanroepen via CSS en omdat ik nu werk in de template file, format-status.php zullen alleen blog posts met die Post Format een Yellow sidebar krijgen mits je dat aanpast in je CSS natuurlijk.

    Op deze manier kun je natuurlijk alle andere Format’s -.php aanpassen aan meerdere kleuren.
    Wat je eigenlijk doet is een beetje VOOR werken. Je wacht nu niet meer dat sidebar.php geladen wordt met alle kermis erin, maar je bouwt zelf al een bepaalde eigen basis om die Sidebar heen zodat jij de controle krijgt p/pagina.

    Wat je dan wel nog even moet doen is alle Kermis uit de sidebar.php verwijderen zodat je niet dubbele DIV’s hebt en dat soort dingen. Wat je wilt is dat sidebar.php niets meer of niets minder doet dat het printen van Widgets en zo weinig mogelijk HTML.

    En in je CSS doe je iets dat hier op lijk:

    #content .yellow {
         blaat
    }
    #content .yellow .widget-area {
        blaat
    }

    Thread starter Markgoessens

    (@markgoessens)

    Zo ‘jaja’, mag ik je van harte bedanken 🙂

    Ik ben nu zo blij! Het is gelukt dankzij jouw uitleg!

    Ik wilde je eerst weer berichten dat ik er echt niet ging uitkomen. Ik wilde alles gaan opsommen wat ik nu precies allemaal gedaan had. Tijdens het opsommen kwam ik erachter dat ik slordig gelezen had.

    Ik had single.php zo gelaten zoals het was, en in format.php de redirect code. Net verkeerd om dus. Vandaar dat er helemaal niets veranderde.

    Dus daarna heb ik nog eens zorgvuldig verder gelezen, en ben ik er uitgekomen. Helemaal super. Ik ben weer de kennis van een functionaliteit rijker.
    Nogmaals, hartelijk dank!

    Fijn dat je geholpen bent!

    En leuk om te zien dat je voor WordPress gekozen hebt.

    Volgens mij deed je dat een tijdje geleden nog niet, ik kan me herinneren dat je ooit op het forum van HTML-site.nl langskwam met wat vragen over je eigen website (portfolio)

    Ongeveer een jaartje miss. wel twee geleden. 🙂

    Thread starter Markgoessens

    (@markgoessens)

    He inderdaad, nu begint me ook iets te dagen, dat je me toen ook geholpen hebt.

    Voorheen was ik altijd actief met Joomla bezig. Inderdaad ben ik pas een half jaar actief met WordPress.
    En eerlijk gezegd werk ik nu veel liever met WordPress dan met Joomla.

    Dat heb je goed onthouden zeg! Dat was inderdaad met mijn portfolio, op het moment dat ik werk zocht. Nu heb ik werk, en heb ik natuurlijk nog steeds hulp nodig. 🙂
    Vooral op het gebied van programmeren. Daar heb ik niet zo’n goede feeling voor. Maar vind ik wel leuk om te doen.

    Hopelijk tot de volgende keer op een forum! 🙂

4 reacties aan het bekijken - 16 tot 19 (van in totaal 19)
  • Het onderwerp ‘Get Post ID in wordpress sidebar wil niet lukken’ is gesloten voor nieuwe reacties.