Wordpress钩子功能

时间:2013-04-20 23:24:28

标签: php wordpress hook

我是新手,需要一些帮助。

这里有一些我想要更改的示例代码,我想将h3标签交换为h5标签。

这是第一页

<?php
        /**
         * woocommerce_before_subcategory_title hook
         *
         * @hooked woocommerce_subcategory_thumbnail - 10
         */
        do_action( 'woocommerce_before_subcategory_title', $category );
    ?>

    <h3>
        <?php
            echo $category->name;

            if ( $category->count > 0 )
                echo apply_filters( 'woocommerce_subcategory_count_html', ' <mark class="count">(' . $category->count . ')</mark>', $category );
        ?>
    </h3>

    <?php
        /**
         * woocommerce_after_subcategory_title hook
         */
        do_action( 'woocommerce_after_subcategory_title', $category );
    ?>

我试图替换这部分代码:

<h3>
        <?php
            echo $category->name;

            if ( $category->count > 0 )
                echo apply_filters( 'woocommerce_subcategory_count_html', ' <mark class="count">(' . $category->count . ')</mark>', $category );
        ?>
    </h3>

用这个:

<div class="caption-non-move">
      <h5>
        <?php
            echo $category->name;

            if ( $category->count > 0 )
                echo apply_filters( 'woocommerce_subcategory_count_html');
        ?>
      </h5>
    </div>

这是我到目前为止所做的事情。

<?php
// Add text to content-product-cat to help with styling
add_action('woocommerce_before_subcategory_title', 'woohook_before_subcategory_title');

function woohook_before_subcategory_title() {
ob_start();

}

add_action('woocommerce_after_subcategory_title', 'woohook_after_subcategory_title');

function woohook_after_subcategory_title() {
 $subcategory_title = ob_get_clean();
 echo "<div class='caption-non-move'>";
 echo str_replace('h3>', 'h5>', $subcategory_title);
}
?>

这是第二页

<li <?php post_class( $classes ); ?>>

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

<a href="<?php the_permalink(); ?>">

    <?php
        /**
         * woocommerce_before_shop_loop_item_title hook
         *
         * @hooked woocommerce_show_product_loop_sale_flash - 10
         * @hooked woocommerce_template_loop_product_thumbnail - 10
         */
        do_action( 'woocommerce_before_shop_loop_item_title' );
    ?>

    <h3><?php the_title(); ?></h3>

    <?php
        /**
         * woocommerce_after_shop_loop_item_title hook
         *
         * @hooked woocommerce_template_loop_price - 10
         */
        do_action( 'woocommerce_after_shop_loop_item_title' );
    ?>

</a>

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

</li>

在第二页上,我试图替换这部分代码

<h3><?php the_title(); ?></h3>

<div class="caption"><h5><?php the_title(); ?></h5>
      <div class="category-main-points"><?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>
      </div>
    </div>

这是我到目前为止第二页的内容

<?php
// Add text to content-product-cat to help with styling
add_action('woocommerce_before_shop_loop_item_title', 'woohook_before_shop_loop_item_title');

function woohook_before_shop_loop_item_title() {
ob_start();

}

add_action('woocommerce_after_shop_loop_item_title', 'woohook_after_shop_loop_item_title');

function woohook_after_shop_loop_item_title() {
 $doh_title = ob_get_clean();
 echo "<div class='caption'>";
 echo str_replace('h3>', 'h5>', $doh_title);
}
?>

1 个答案:

答案 0 :(得分:1)

如果h3标签嵌入到模板本身(看起来像是),并且您不想或不能更改原始代码。你可以做到这一点的唯一方法是使用php输出缓冲。

<?php
add_action('woocommerce_before_subcategory_title', 'woohook_before_subcategory_title');

function woohook_before_subcategory_title() {
ob_start();

}

add_action('woocommerce_after_subcategory_title', 'woohook_after_subcategory_title');

function woohook_after_subcategory_title() {
 $subcategory_title = ob_get_clean();
 echo str_replace('h3>', 'h5>', $subcategory_title);
}
?>

另请注意,do_action的正确挂钩是add_action,而不是add_filter。