限制Get_the_Excerpt上的筛选器查询项目,而不是当前帖子

时间:2021-06-19 作者:quasi

因此,我有一个walker导航菜单,它将页面摘录添加到导航菜单中的所有页面链接。

现在,我想为博客存档构建一个自定义的帖子摘录。

当导航菜单不符合博客存档时,所有这些都可以正常工作。在博客存档上,nav菜单的摘录可以获得博客存档的过滤器。这是因为摘录过滤器检查当前帖子。

是否有办法让摘录过滤器检查被查询的项目而不是当前帖子?就像walker菜单一样。。。

Here are the filters I use:

对于walker菜单

function q_menu_item_custom_output( $item_output, $item, $depth, $args ) {
    $excerpt_el = \'\';
    $p_id = $item->object_id;
    if ( has_excerpt( $p_id ) ) {
        $excerpt_el = \'<span class="excerpt">\' . get_the_excerpt($p_id) . \'</span>\';
    }
    return $item_output . $excerpt_el;
}
add_filter( \'walker_nav_menu_start_el\', \'q_menu_item_custom_output\', 10, 4 );
对于帖子摘录:

function q_excerpt_custom( $excerpt ) {
    if ( get_post_type( ) == \'post\' ) :
        $excerpt_custom = \'<a class="card-permalink" href="\' . get_permalink() . \'" rel="nofollow">&nbsp; HA HA HA </a>\';
        return $excerpt_custom;
    endif;
    return $excerpt;
}
add_filter( \'get_the_excerpt\', \'q_excerpt_custom\' );
谢谢大家!

1 个回复
SO网友:bosco

正在查看the documentation for the get_the_excerpt filter, 我们可以看到它收到WP_Post 对象,表示当前帖子或传递给的帖子get_the_excerpt() 函数调用。

因此

function q_excerpt_custom( $excerpt, $post ) {
    if ( get_post_type( $post ) == \'post\' ) :
        $excerpt_custom = \'<a class="card-permalink" href="\' . get_permalink( $post ) . \'" rel="nofollow">&nbsp; HA HA HA </a>\';
        return $excerpt_custom;
    endif;
    return $excerpt;
}
add_filter( \'get_the_excerpt\', \'q_excerpt_custom\', 10, 2 );

相关推荐

如何在另一个函数中使用插件的ShortCode属性值?

我有一个插件作为一个类,其中我使用一个shortcode属性来填充$outlet变量。然而,尽管sanitize_text_field($atts[\'outlet\']) 返回所需字符串,$this->outlet = sanitize_text_field($atts[\'outlet\']) 未更新的值$outlet. 如果我为类的$outlet 最初,它在example_callback(). 插件的所有其他功能都按预期工作。只是wp_news_shortcode() 未分配$attr 价值