如何将css样式类属性添加到从wp_get_archives生成的链接?

时间:2015-11-20 21:42:45

标签: php css wordpress class widget

对于我正在开发的一个wordpress自定义主题,

我需要做什么才能获得:     <a class="archive_link" href...>代替:<a href...>

来自wp_get_archives函数的

是否为小部件?

在functions.php中我有这个:

function sxo_widgets_init() {
    register_sidebar( array(
        'name' => __( 'Primary Widget Area', 'sxo' ),
        'id' => 'sidebar-1',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h1 class="widget-title">',
        'after_title' => '</h1>'
    ) );
}
add_action( 'widgets_init', 'sxo_widgets_init' );

在aside.php模板中,我有:

...
<ul>
    <?php wp_get_archives( array( 'type' => 'monthly') ); ?>
</ul>
...

(更新)而且,我忘了在funtions.php中说:

function sxo_widgets_init() {
    register_sidebar( array(
       'name' => __( 'Primary Widget Area', 'sxo' ),
       'id' => 'sidebar-1',
       'before_widget' => '<aside id="%1$s" class="widget %2$s">',
       'after_widget' => '</aside>',
       'before_title' => '<h1 class="widget-title">',
       'after_title' => '</h1>'
   ) );
}
add_action( 'widgets_init', 'sxo_widgets_init' );

(更新2 - aside.php:)

<?php
/**
* The Sidebar containing the main widget areas.
*
* @package sxo
* @since sxo 1.0
*/
?>
<div id="secondary" class="widget-area" role="complementary">
    <?php do_action( 'before_sidebar' ); ?>
    <?php if ( ! dynamic_sidebar( 'sidebar-1' ) ) : ?>

        <aside id="search" class="widget widget_search">
            <?php get_search_form(); ?>
        </aside>

        <aside id="archives" class="widget">
            <h1 class="widget-title"><?php _e( 'Archives', 'sxo' ); ?></h1>
            <ul class="archive-sidebar">    
                 <?php wp_get_archives( array( 'type' => 'monthly') ); ?> <!--'before' => '<a class="widget-link">', 'after' => '</a>'?>-->
                  <?php /*wp_get_archives( array( 'type' => 'monthly', 'format' => 'custom', 'before' => '<a class="widget-link">', 'after' => '</a>') ); ?> <!--'before' => '<a class="widget-link">', 'after' => '</a>'?>-->


                 <?php //<?php wp_get_archives( 'format=custom&before=<p id="test">&after=</p>&type=postbypost&limit=100' ); 
                /*Step #3

                Now instead of a unordered list using <li></li>, the code will now be <p></p> and you are ready to go to town on customizations.  Endless possibilities.*/?>
            </ul>
        </aside>

        <aside id="meta" class="widget">
            <h1 class="widget-title"><?php _e( 'Meta', 'sxo' ); ?></h1>
            <ul>
                <?php wp_register(); ?>
                <li><?php wp_loginout(); ?></li>
                <?php wp_meta(); ?>
            </ul>
        </aside>

    <?php endif; // end sidebar widget area ?>
</div><!-- #secondary .widget-area -->

<?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?>

     <div id="tertiary" class="widget-area" role="supplementary">
      <?php dynamic_sidebar( 'sidebar-2' ); ?>
     </div><!-- #tertiary .widget-area -->

<?php endif; ?>

(更新3) - 其中(从我的front-page.php模板中提取的代码)我正在尝试包括aside.php:

<?php
/*
Template Name: Front-page - Portada de sxo
   @package WordPress
 * @subpackage sxo
*/

get_header('front-page'); ?>

<div id="contenido" class="wrapper clearfix">
<section id="list_posts_home">
            <div id="content" class="widecolumn">
                 <?php if (have_posts()) : while (have_posts()) : the_post();?>

                     <div class="listed_post_home">
                        <h2 id="post-<?php the_ID(); ?>"><a class="linkHomeBlog" href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>
                        <div class="entrytext">
                            <div style="float:left;margin-right:1.5em;"><?php the_post_thumbnail(); ?></div>
                            <p><?php
                            the_excerpt('<a href="<?php the_permalink(); ?>">Read more</a></p>');?>
                            <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
                        </div>
                     </div>
                <?php endwhile; 
                sxo_content_nav( 'nav-below' );
                endif; ?>
            </div>
<?php get_sidebar(); ?>

</section>

(更新4)sidebar.php模板:

<?php
/**
 * The sidebar containing the main widget area.
 *
 * If no active widgets in sidebar, let's hide it completely.
 *
 * @package WordPress
 * @subpackage sxo
 * @since sxo
 */
?>

    <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
        <div id="secondary" class="widget-area" role="complementary">
            <?php dynamic_sidebar( 'sidebar-1' ); ?>
        </div><!-- #secondary -->
    <?php endif; ?>

提前致谢!

2 个答案:

答案 0 :(得分:0)

您正在使用的注册边栏功能构建围绕窗口小部件的html,而不是窗口小部件中的实际代码。但是,您的代码表明您直接在php文件中输出链接,而不是通过小部件。考虑到这一点,有两种可能的解决方案。

选项1

您可以在aside.php文件中的ul添加一个类,并从样式表中定位(如果需要)。

aside.php

<ul class="archive-sidebar">
    <?php wp_get_archives( array( 'type' => 'monthly') ); ?>
</ul>

的style.css

archive-sidebar a {
    // Some funky styles
}

选项2

如果上述内容不是您的后续内容,则可以在wp调用中添加过滤器。此代码未经测试,但至少应指向正确的方向。将以下内容添加到functions.php文件中。

的functions.php

function get_archives_link_mod ( $link_html ) {
    return str_replace("<a", '<a class="archive_link"', $link_html);
}
add_filter("get_archives_link", "get_archives_link_mod");

如果您愿意,使用这两个选项,您将能够从您的javascript文件中定位链接。如果你正在使用jQuery,你可以用......来实现这个目标。

$('.archive-link a')

$('.archive-link')

取决于您使用的选项。

答案 1 :(得分:0)

继续我的其他答案中的评论。将sidebar.php更新为以下内容可以获得您想要的内容。这是原始问题中发布的旁边和侧边栏文件的组合,为清晰起见删除了注释。

<?php
/**
* The Sidebar containing the main widget areas.
*
* @package sxo
* @since sxo 1.0
*/
?>
<div id="secondary" class="widget-area" role="complementary">

    <aside id="search" class="widget widget_search">
        <?php get_search_form(); ?>
    </aside>

    <aside id="archives" class="widget">
        <h1 class="widget-title"><?php _e( 'Archives', 'sxo' ); ?></h1>
        <ul class="archive-sidebar">   
            <?php wp_get_archives( array( 'type' => 'monthly') ); ?> 
        </ul>
    </aside>

    <aside id="meta" class="widget">
        <h1 class="widget-title"><?php _e( 'Meta', 'sxo' ); ?></h1>
        <ul>
            <?php wp_register(); ?>
            <li><?php wp_loginout(); ?></li>
            <?php wp_meta(); ?>
        </ul>
    </aside>

    <?php do_action( 'before_sidebar' ); ?>

    <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    <?php endif; ?>

    <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?>
        <?php dynamic_sidebar( 'sidebar-2' ); ?>
    <?php endif; ?>
</div>

首先显示您的静态内容&#39;,然后是侧边栏-1,然后是侧边栏-2。