Forums

[resolved] Inserting permalink into wp_get_archives (7 posts)

  1. Raw-m
    Member
    Posted 1 year ago #

    Hi everyone

    I'm trying to display the list of years with a custom background image specific to each year. I need a custom hook in the html for the css to get hold of.

    I've customised wp_get_archives to strip out the default <li> and include a new one by changing the "format" to "custom" and using the before/after to include an <li> with a class (see below). Does anyone know if I can insert the permalinks (or any other attribute/php for that matter) into my class tag?

    wp_get_archives(array('format'=>'custom','type'=>'yearly','before'=>'<li class="PERMALINK HERE!">','after'=>'</li>
    '));
  2. vtxyzzy
    Member
    Posted 1 year ago #

    If you can hand-code a couple of items to look the way you want, and paste the code here, I will try to generate that code from wp_get_archives() by exploding the string returned and preg_replacing selected parts.

  3. Raw-m
    Member
    Posted 1 year ago #

    Hi vtxyzzy, many thanks for your offer

    This is basically what I'm after (I'm not on my dev computer but the hrefs should be the same as is outputed by using wp_get_archives):

    <li class="2010"><a href="2010">2010</a></li>
    <li class="2009"><a href="2009">2009</a></li>
    <li class="2008"><a href="2008">2008</a></li>...

    I've tried to recreate it using get_posts but I can't find details on how to return a list the same as "type=yearly".

  4. vtxyzzy
    Member
    Posted 1 year ago #

    See if the code below will do what you want:

    $linkstring = wp_get_archives(array('echo' => 0,'format'=>'custom','type'=>'yearly','before'=>'|'));
    $linkarray = explode('|',$linkstring);
    if ( get_option('permalink_structure') != '' ) {
      $pattern = '#/(\d\d\d\d)/?[^>]+?>#';
    } else {
      $pattern = '/m=(\d\d\d\d)[^>]+?>/';
    }
    $output = "<ul>\n";
    foreach ($linkarray as $onelink) {
      if (preg_match($pattern,$onelink,$matches)) {
         $output .= "<li class='{$matches[1]}' >$onelink</li>\n";
      }
    }
    $output .= "</ul>\n";
    echo $output;
  5. Raw-m
    Member
    Posted 1 year ago #

    vtxyzzy, you're a star!! Massive thanks :)

  6. vtxyzzy
    Member
    Posted 1 year ago #

    Glad it worked! Now, please use the dropdown at top right to mark this topic 'Resolved' so that anyone researching a similar problem can see that there is a solution.

  7. Raw-m
    Member
    Posted 1 year ago #

    It is done! Thanks again.

Topic Closed

This topic has been closed to new replies.

About this Topic