Questions tagged «wp-query»

“ wp-query”模棱两可是指两件事之一。1)WP_Query是WordPress的本机类,它允许用户使用多种条件来查询帖子数据库。2)$ wp_query是全局变量,用于保存WordPress根据给定请求准备的主查询对象。

5
如何通过部分元键查询帖子?
我有一个功能,可以将帖子的“喜欢”状态存储为帖子元。我想将“喜欢”与喜欢它的用户相关联,所以我设置了一个自定义字段“ like_status_ {user_id}”(其中{user_id}是当前登录用户的ID),我将其存储为0或1.因此,对于具有多个“点赞”的帖子,db中将有几个元数据设置如下: 'meta_key' = 'like_status_0' 'meta_value' = 1 'meta_key' = 'like_status_2' 'meta_value' = 1 'meta_key' = 'like_status_34' 'meta_value' = 1 ....等等。 特定帖子可能有数千个赞。我如何运行查询,以显示其他人是否也喜欢该帖子? 我在想这样的事情: $query = new WP_Query(array( 'meta_key' => 'like_status_{user_id}', 'meta_value' => 1, )); 我正在尝试向所有喜欢该帖子的人发送通知,当其他人喜欢该帖子时……例如,“嘿,其他人喜欢您喜欢的帖子。您应该去看看!” 但是我需要一种方法来找出是否有人喜欢该帖子,如果喜欢,他们会是谁,以便我通知他们。 如果不可能,您能否建议一种更好的方式将数据存储为post_meta,同时又保持快速更新帖子上单个用户的喜欢状态的效率?

1
升级到4.4后自定义分类查询中断
我刚刚从4.2升级到4.4,现在我的分类查询返回空。在升级之前,它一直运行良好。 我已经注册了一个名为的自定义分类法'title',供我的自定义帖子类型使用'sg-publications'。按照WP模板层次结构,我创建了一个名为的模板taxonomy-title.php,该模板使用默认的查询args,到目前为止,已按标题正确显示了每个出版物。 这是该模板中$ queried_object和$ wp_query-> request的输出: [queried_object] => WP_Term Object ( [term_id] => 1256 [name] => Stroupe Scoop [slug] => stroupe-scoop [term_group] => 0 [term_taxonomy_id] => 1374 [taxonomy] => title [description] => [parent] => 0 [count] => 30 [filter] => raw ) [queried_object_id] => 1256 [request] => SELECT wp_posts.* FROM …

1
在首页上混合常规和自定义帖子类型(使用meta_query)
不知道如何实现这一目标。我试图在网站首页上混合标准帖子和自定义帖子,但是我只想在设置了元值的情况下显示自定义帖子。显示帖子效果很好,'post_type' => array('game', 'post')但是当我添加meta_query时,常规帖子不再显示(这很有意义,因为它们不符合meta_query条件)。 因此,如何将meta_query限制为仅自定义帖子类型,以便仍包含常规帖子?

4
检测您是否在“ SINGLE POST”页面中的最佳方法
因此,这似乎是一件很卑鄙的事情,但请在这里关注我。 我正在尝试通过pre_get_posts操作添加一些逻辑。这是给我的整个WP_Query对象。(见末) 我考虑过使用的东西: is_single() - 太宽泛。 is_singular()-使用此功能为时过早,get_queried_object()目前尚未设置。 $query->single 属性-太宽泛了。 $query->get('post_type')-未设置,因为它正在使用该name属性。 是name真正的唯一指标吗? WP_Query Object ( [query] => Array ( [page] => [name] => abcs-of-mental-health ) [query_vars] => Array ( [page] => [name] => abcs-of-mental-health [error] => [m] => 0 [p] => 0 [post_parent] => [subpost] => [subpost_id] => [attachment] => [attachment_id] …
9 wp-query 

2
在get_template_part循环中使用自定义WP_Query
我有一个自定义帖子类型的查询: <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $books = new WP_Query(array( 'post_type' => 'wiki', 'posts_per_page' => '50', 'paged' => $paged )); ?> 我想使用loop-books.php遍历这些帖子: <?php get_template_part( 'loop', 'books' ); ?> 在loop-books.php内部,我有这些内容,就像常规的loop.php一样,我只是更改了have_posts和the_post函数以与$ books查询一起使用: <?php if ( $books->have_posts() ) : ?> <?php while ($books->have_posts()) : $books->the_post(); ?> <?php the_title(); ?><br/> <?php …


4
使用自定义SQL查询进行分页
我有自己的SQL字符串,可以选择带有特定WHERE子句的Custom Post Type帖子。我使用了offset和limit根据所显示的页面返回适当的帖子。很好 现在,我想提出previous_posts_link()和next_posts_link()功能的工作。它们都被称为get_posts_nav_link从哪使用global $wp_query。 有没有一种方法可以重新分配global $wp_query我的SQL字符串或$wpdb->get_results结果或其他任何内容?因此,本机previous_posts_link()和next_posts_link()WP函数将起作用。 如果没有,我该如何重现上一个和下一个后链接功能? 我将不胜感激任何帮助和建议!我完全坚持了这一点。 谢谢 :) 注意:我刚刚注意到previous_posts_link()在所有页面上都可以正常工作,但是no idea why在这种情况下,为什么next_posts_link不起作用:S 这是代码: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $post_per_page = intval(get_query_var('posts_per_page')); $offset = ($paged - 1)*$post_per_page; $sql = " SELECT SQL_CALC_FOUND_ROWS wp_posts.*, wp_postmeta.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN wp_postmeta AS …

3
如何设置自定义帖子类型以查看将来的帖子
我已经设置了一个CPT,其行为与发布相同,但用于发布事件详细信息。 事实是,有些职位是在将来的,而这些职位的未来日期已定。问题是普通用户看不到这些帖子。 所以: 如何更改archive-events.php以也列出将来的帖子?在保持分页的同时,首先显示远期的帖子,最后显示最早的帖子。 我如何做到这一点,以便当用户单击将来的帖子时,他们不会得到找不到404页面的信息,因为该帖子尚未在技术上发布?

4
在get_posts()中为meta_query参数设置别名
有没有办法在运行meta时在meta_query参数上设置别名get_posts()?我的查询之一表现不佳。为了进行优化,我只需要能够重用相同的联接表,而不是只需要一个表就联接3个表。 我目前的例子 $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

4
是否可以完全停止WP_Query检索帖子?
我正在尝试使用WP Redis缓存整个$ wp_query对象,其键为$ query_vars_hash。 这是如何$wp_query添加到$wp_object_cache: add_action('wp', function($wp) { if ( is_admin() ) return; global $wp_query; if ( !wp_cache_get($wp_query->query_vars_hash, 'globals') ) { wp_cache_add($wp_query->query_vars_hash, $wp_query, 'globals'); } }); 然后,我需要先检查查询是否已缓存,然后WP_Query才能检索帖子: add_action('pre_get_posts', function($query) { if ( is_admin() ) return; $cached_query = wp_cache_get($query->query_vars_hash, 'globals'); if ($cached_query) { $GLOBALS['wp_query'] = &$cached_query; return; // Return immediately to …
8 wp-query  hooks  cache 

1
通过DESC,ASC在自定义WP_Query中排序
我需要在查询中进行多级排序。问题在于如何像在SQL中那样对一个值DESC和另一个ASC进行排序。在终端中运行以下SQL似乎可以满足我的要求: SELECT DISTINCT * FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_posts.post_type = 'post' AND wp_postmeta.meta_key = 'pb_issue_featured' AND wp_posts.post_status = 'publish' ORDER BY wp_postmeta.meta_value DESC, wp_posts.menu_order ASC; 该pb_issue_featured是一个布尔值。我需要的最终结果是查询以在顶部显示该字段的值为1的帖子,然后显示所有其他字段。然后指定第二层订购menu_order(我正在使用帖子类型订购插件)。 问题是我的布尔值需要从高到低(从1到0)排序,但是menu_order相反。该插件首先订购的菜单的菜单顺序为1。因此,无法使用WP_Query中的内置“ orderby”。有人有建议吗?我调查了“ posts_orderby”过滤器,但无法理解。真的不确定应该在哪里应用它或如何解决它。只是没有按照我的方式重新排序。 谢谢您的帮助!如果相关,我将发布实际的WP_Query,但我想使其尽可能短。 查询参数: $args = array( 'post_type' => 'post', 'meta_key' => 'pb_issue_featured', 'orderby' => 'meta_value', 'order' …
8 wp-query  mysql  order 

2
排序:使用orderby meta_value_num然后按标题排序的自定义查询
我尝试运行自定义帖子类型查询以匹配以下条件: 首先按年份降序对电影进行排序, 然后按名称标题(在“年内”进行排序)。 所需的输出: 电影标题A,2006 电影标题Z,2006 ... 电影标题A,1996 电影标题Z,1996 我使用以下代码: $wp_query = new WP_Query(); $wp_query->query( array( 'post_type' => 'movies', 'distribution' => 'companyA', 'meta_key' => 'year', 'orderby' => 'meta_value_num title', 'order' => 'DESC', 'posts_per_page' => -1, 'post_status' => 'publish', )); 我尝试了几件事,但我只能得到这个“反”结果: 电影A,1996 电影Z,1996 ... 电影A,2006 电影Z,2006 如果我更改DESC,ASC,则仅更改标题排序。但我需要将其应用于年份而不是标题。 使用两个ord​​erby值是正确的方法吗?还是我必须使用meta_query或自定义SQL? 提前谢谢! 这是从中得到的SQL查询 $GLOBALS['wp_query']->request …

2
通过自定义帖子类型在帖子页面上进行AJAX搜索
我在单个帖子页面上创建ajax搜索时遇到问题。我需要将搜索结果限制为自定义帖子类型“ fod_videos”和“ post”以及类别12。我的问题是搜索将返回这些过滤器下的所有帖子,并且不采用搜索值。我猜想我遗漏了一些明显的东西,但我无法弄清楚。这是我的设置。 <div class="panel"> <h2>Search Videos</h2> <div id="my-search"> <form role="search" method="get" id="searchform" action="http://myurl.com/" > <input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Search" /> </form> </div> </div> add_action('wp_ajax_wpa5000_search', 'wpa5000_search'); add_action('wp_ajax_nopriv_wpa5000_search', 'wpa5000_search'); function wpa5000_search(){ global $wp_query; $search = $_POST['search_val']; $args = array( 's' => $search, 'posts_per_page' => 10, 'cat' …

1
带有WP_Query的WPML支持全部3种语言[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为WordPress Development Stack Exchange 的主题。 5年前关闭。 在WPML支持论坛上我对此有一些了解,但我想我也可以在这里提问。这是重要的信息:我正在使用自定义帖子类型,自定义字段,自定义所有内容来运行WP Multisite设置。在一个特定的模板文件中,我有一个辅助循环,该循环从另一个博客中提取项目列表。从我收集到的信息来看,使用WP API的所有内容都应仅过滤为当前语言,但是WP_Query()我所获得的功能都没有。 相关代码: <?php switch_to_blog(23); $args = array('post_type' => 'release-notes', 'suppress_filters' => 0, 'meta_query' => array( array( 'key' => 'related_products', 'value' => $thisproduct, 'compare' => 'LIKE' ) ) ); $loop = new WP_Query($args); if ($loop->have_posts()) { echo '<h2>Release Notes</h2>'; while ( …

5
自定义分类法WP_Query分类中的所有术语?
有没有一种简单的方法来查询来自特定分类法中带有任何术语的任何帖子? 我知道这种技术: $custom_taxonomy_query = new WP_Query( array( 'taxonomy_name' => 'term_slug', ) ); 但是我想通过一个通配符代替term_slug,或者只是一个空字符串。这样一来,我就能获得所有用该分类法中的任何术语标记的帖子,而不仅仅是一个特定术语。 谢谢您的帮助,戴夫

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.