在unctions.php中使用条件语句

时间:2012-11-08 作者:DreamGrowers

我在下面的functions.php 我想用条件语句添加两个过滤器,以避免影响每个query\\u帖子。像这样的

if(!is_admin() && is_page(\'Home\')){ //two filters }
然而,我对PHP的了解还不够,不知道把它放在哪里或如何使用<?php> 标签。有人能提供建议吗?它来自this thread 这是在WP论坛上关闭的。

add_filter(\'posts_orderby\', \'edit_posts_orderby\');
add_filter(\'posts_join_paged\',\'edit_posts_join_paged\');

function edit_posts_join_paged($join_paged_statement) {
    global $wpdb;
    $join_paged_statement = "LEFT JOIN ".$wpdb->prefix."wpv_voting ON ".$wpdb->prefix."wpv_voting.post_id = $wpdb->posts.ID";
    return $join_paged_statement;
}

function edit_posts_orderby($orderby_statement) {
    global $wpdb;
    $orderby_statement = "(".$wpdb->prefix."wpv_voting.vote_count) DESC";
    return $orderby_statement;
}

1 个回复
SO网友:fuxia

基本上,你把第二块放进第一块。等到最后一刻:

add_action( \'pre_get_posts\', \'wpse_71899_start_filter\' );

function wpse_71899_start_filter()
{
    // wrong page
    if ( ! is_page( \'Home\' ) )
        return; // stop here.

    add_filter(\'posts_orderby\', \'edit_posts_orderby\');
    add_filter(\'posts_join_paged\',\'edit_posts_join_paged\');
}

function edit_posts_join_paged($join_paged_statement) {
    global $wpdb;
    $join_paged_statement = "LEFT JOIN ".$wpdb->prefix."wpv_voting ON ".$wpdb->prefix."wpv_voting.post_id = $wpdb->posts.ID";
    return $join_paged_statement;
}

function edit_posts_orderby($orderby_statement) {
    global $wpdb;
    $orderby_statement = "(".$wpdb->prefix."wpv_voting.vote_count) DESC";
    return $orderby_statement;
}
在您的主题中functions.php 应该只有一个<?php 标记:在第一行。

您可以将此代码放置在该文件的任何位置,例如底部。

结束

相关推荐

Ajax, filters and shortcodes

您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\