使用元查询和用户元排除帖子

时间:2018-01-15 作者:fmbns

我有一个循环,它工作得很好,完全符合我的要求。问题是,我需要排除已经标记为使用add_user_meta查看的特定帖子。使用update\\u user\\u meta和值为“1”的帖子id将每个帖子标记为已查看。

$_goal = $_GET[\'goal\'] != \'\' ? $_GET[\'goal\'] : \'\';
$calmargs = array(\'post_type\'=>\'yoga_post\',\'goal\'=>$_goal,\'orderby\'=>\'date\',\'order\'=>\'DESC\',\'posts_per_page\'=>1);
$calm = new WP_Query($calmargs);
if ($calm->have_posts()) { 
    while($calm->have_posts()) : $calm->the_post(); ?>

        <div>
        <div>   
            <a href="https://members.com/?det=<?php echo get_the_ID(); ?>" target="_blank"><?php the_post_thumbnail(); ?></a>
            <h4 style="height:70px;padding-top:15px"><a href="https://member.com/?det=<?php echo get_the_ID(); ?>" target="_blank" title="<?php the_title(); ?>"><?php the_title(); ?></a><h4>

        <?php
            $yogavid = get_the_ID(\'yoga_post\');     
            $videowatched = get_user_meta($current_user->ID, \'video_viewed_\' . $yogavid, true);
            $one = \'1\';
            $zero=\'0\';

            if ($videowatched != \'1\'){ ?>
                <form method="POST" target="_self" action="">
                    <input type="submit" class="watched-vid" id="<?php echo ($one.$yogavid); ?>" name="<?php echo ($one.$yogavid); ?>" value="Mark as Viewed">
                </form>
                <?php if(isset($_POST[($one.$yogavid)])){
                    update_user_meta($current_user->ID,\'video_viewed_\' . $yogavid, \'1\'); ?>
                    <script>
                    jQuery(\'#<?php echo ($one.$yogavid); ?>\').attr( \'value\' , \'Viewed\' );
                    </script>
                <?php }  
            } else { ?>
                <form method="POST" target="_self" action="">
                    <input type="submit" class="watched-vid" id="<?php echo ($zero.$yogavid); ?>" name="<?php echo ($zero.$yogavid); ?>" value="Viewed">
                </form>
                <?php if(isset($_POST[($zero.$yogavid)])){
                    update_user_meta($current_user->ID,\'video_viewed_\' . $yogavid, \'0\'); ?>
                    <script>
                    jQuery(\'#<?php echo ($zero.$yogavid); ?>\').attr( \'value\' , \'Mark as Viewed\' );
                    </script>   
                <?php } 
            } ?>    
            <?php 
                $calmpost = get_the_ID(\'yoga_post\');
                add_user_meta($user_id,\'calm_post\', $calmpost, true); ?>
        </div>
    </div>
<?php 
endwhile; 
我需要排除键“video\\u viewed\\u”中值为“1”的帖子$约伽维德。我尝试过嵌套循环和pre\\u get\\u帖子,但都是空的。如果您能给我一些建议,我将不胜感激!

1 个回复
SO网友:aswinshenoy

一种更简单的方法是存储一个post id的列表/数组,其中post id已标记为由用户在his中读取user_meta. 然后为每个登录的用户检索此阵列,并运行wp_query 使用post__not_in 以数组作为参数的参数。

结束

相关推荐

无法在WordPress中使用$wpdb

我在Wordpress中使用mySQL数据库。我试图在wordpress中使用简单的数据库查询。<?php global $wpdb; $problems = $wpdb->get_results( \"SELECT * FROM $wpdb->ma_usermeta\"); ?> 当我运行它时,我收到POST 500(内部服务器错误)。没有那一排,ewerything工作很顺利。当我尝试获取用户id时,也会发生同样的情况:<?php $us