WordPress

WordPress开发人员和管理员的问答

4
meta_query尚未设置的键
我正在尝试查询画廊系统的自定义帖子类型。我有一个复选框可以将画廊设置为“特色”画廊(通过“更多字段”插件设置)-如果选中此复选框,则meta值将变为1,如果未选中,则其变为0。一切都很好。但是,如果从未选中该框,那么就不会创建元密钥,这意味着我无法查询NOT LIKE 1,因为它不存在。 我想要的查询是提取4个在此元值中未标记为“ 1”的画廊,以及那些根本没有此值的画廊。是否有办法始终为新添加的帖子提供此元键的默认值(即,如果未选中此框,则默认情况下始终使其默认为0)还是有办法查询尚未设置的键? 我当前的查询是: $args = array( 'post_type' => 'gallery', 'showposts' => 4, 'meta_key' => 'gal-ID', 'order_by' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'main-gal', 'value' => false, ) ), ) ); 我已经尝试过各种尝试,例如“比较” =>“不喜欢”,“!=”等。 有任何想法吗?这张票似乎意味着应该对它进行整理: http://core.trac.wordpress.org/ticket/18158 谢谢!

1
如何使用meta_query来对meta_key进行排序并按日期进行二级排序?
在过去的几天里,我一直在对问题进行故障排除,并且一直在圈里。真的可以用新鲜的眼睛来帮助我回答这个问题... 因此,我正在一个wordpress网站上工作,该网站的帖子具有一些与我需要运行的查询相关的自定义字段:“过期”和“我的排序顺序”。当我运行query_posts时,我希望结果是“ post-expired”不是“ yes”的帖子(此部分在我的代码中有效)。我还希望将结果按“我的排序顺序”的DESC数值排序(也可以使用),如果“我的排序顺序”有关联,我希望按日期对最近的帖子进行二次排序第一。 按日期的第二排序是我遇到麻烦的地方。 这是我现在拥有的代码: <?php $args = array( 'paged' => $paged, 'meta_query'=> array( array( 'key'=>'post-expired', 'value'=> 'yes', 'compare' => '!=' ) ), 'meta_key'=>'my-sort-order', 'orderby'=>'meta_value_num', 'order'=>'DESC' ); $args = array_merge( $args , $wp_query->query ); query_posts( $args ); ?> 使用上面的代码,我正确地获取了未过期的帖子,并且按照我的排序顺序降序对它们进行了排序(即100出现在99之前,依此类推)。但是,如果两个帖子都具有相同的排序顺序值,那么就会发生某种二级排序,我似乎无法控制(并且无法弄清楚它实际上是在排序的)。 解决此问题的第一个想法是,如果我想为该帖子设置特定的排序顺序,则仅将值添加到“我的排序顺序”。我以为如果其余帖子的此字段的值都留为空白,则它们将按照DESC日期的默认排序方式简单返回(按设置排序顺序的帖子之后)。但是,实际上发生的是,没有设置排序顺序值的所有帖子都根本没有返回... 接下来,我尝试在orderby字段中添加多个值,如下所示: ('orderby'=>'meta_value_num date') 这完全炸毁了我想要的两个排序顺序,并以意外的方式退回了帖子。我的印象是允许使用多个orderby值,但是由于某些原因,它在这里不起作用。 在这一点上,我不确定如何使这些潜在的解决方案中的任何一个起作用。有谁知道我该怎么做?1)首先按“我的排序顺序”字段对帖子进行排序,然后使用默认的日期排序返回该字段中没有值的其余帖子;还是2)弄清楚如何通过排序来控制次要顺序,以便任何与“我的排序顺序”相关的帖子都将按日期进行排序(最新的优先)?

3
如何在自定义菜单页面上实现add_settings_error?
《专业WordPress插件开发》一书详细说明了如何正确使用Settings API,还演示了如何添加菜单和子菜单,但不幸的是,它没有提供任何此类示例。尽管我设法使其中的大部分工作正常进行,但我仍无法弄清楚如何在自定义菜单页面上正确实现add_settings_error。这是我的代码: function settings_main_validate( $input ) { $valid['text_string'] = preg_replace( '/[^a-zA-Z]/', '', $input['text_string'] ); if ( $valid['text_string'] != $input['text_string'] ) { //add_setting_error: $title, $id, $error_message, $class add_settings_error( 'fields_main_input', 'texterror', 'Incorrect value entered!', 'error' ); } return $valid; } 上面的验证在使用渲染设置时效果很好add_options_page,但在使用渲染的页面上不会显示设置错误add_menu_page。

5
在所有帖子/页面上禁用评论
有没有一种快速的方法来禁用所有帖子和页面上的所有评论。我知道您可以进入帖子下的仪表板,单击评论下的“编辑”和“不允许”。那是唯一的方法吗?
8 comments 

2
在wp-super-cache或w3-total-cache上高“到期时间”的优缺点?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为WordPress Development Stack Exchange 的主题。 5年前关闭。 在wp-super-cache页面中,有以下句子,我不理解: 检查和删除过期的文件非常昂贵,但是将它们保留在那里也很昂贵。在非常繁忙的站点上,您应该将到期时间设置为300秒。 假设我使用的到期时间很短,这是否意味着缓存需要每隔300秒重新构建一次? 我的意思是,我的大部分内容(首页除外)都不会改变。那么,为什么大多数帖子在几天之内都保持不变是为什么呢?

2
最早可靠获取$ post / $ posts的钩子
我可以钩到最早可以$post/$posts在前端和后端访问全局变量的位置的动作是什么?我尝试遍历Codex参考资料,Adam Brown的参考资料,并在源代码中浏览了几次,但运气不好找到一个好的参考资料。 pre_get_posts为时过早;posts_selection如果您想在回调期间进行第二次get_posts()调用,则使用无效。并且template_redirect不会在管理员端运行。the_post可能早于template_redirect前端,但也不会在后端运行。理想情况下,我希望某些东西可以在get_post()/get_posts()返回之前运行,但是我看不到任何类似的东西。 我过去曾使用过the_posts过滤器,但我更喜欢使用操作,因为它在技术上更正确。 现在,我只想插话两次;一次template_redirect用于前端,再一次admin_xml_ns用于后端。不过,我并不是很喜欢,因为我的逻辑在语义上与这两个钩子都不相关,并且这似乎是非常普遍的需求,应该有一个像“ post_get_posts”(ala pre_get_posts)这样的钩子可以工作双方。


3
自定义帖子类型分页404修复?
一直试图使它整天工作,但是没有任何运气... 我有一个名为“ news”的自定义帖子类型和一个存档模板(archive-news.php),在这里我想显示2个带有分页的帖子,效果很好,直到我尝试转到“下一页”( / news / page / 2),返回错误404。 知道如何解决此问题/我在做什么错吗? 我花了整整一天的时间试图通过搜索Google和WordPress表单来找到解决方案,但我发现了很多解决方案,但到目前为止都没有奏效。 我的自定义帖子类型功能:http : //pastebin.com/uG1L6YNu 我的重写规则打印:http : //pastebin.com/jbaDANYr

2
如何使get_template_part始终先检查子主题?
如何强制WP在运行时始终先检查子主题文件夹get_template_part? 示例:子主题加载get_template_part('content', 'inventory')到中single.php。因为所有子主题(还有很多)共享相同的通用清单模板库,所以该文件content-inventory.php位于父主题中。到目前为止,一切都很好。 我想在上述清单模板中添加一小部分,这对于每个子主题都是唯一的。添加get_template_part('content', 'inventory-special')到content-inventory.php不会首先检查孩子的主题目录。

1
“ _encloseme”元密钥难题
在使用元数据箱/自定义字段时,我似乎间接_encloseme meta_keys在我的整个屏幕上创建了许多wp_postmeta。 在这里看到: 到目前为止,还没有出现任何问题,并且自定义字段也可以正常工作,但是我在本地测试站点上只有2个左右的帖子烦躁不安,如果以后会引起问题,我也不想在我的活动站点中实现它在路上。有谁知道该怎么办,这很正常吗? 这是我的metabox的代码。 <?php //Add meta boxes to post types function plib_add_box() { global $meta_box; foreach($meta_box as $post_type => $value) { add_meta_box($value['id'], $value['title'], 'plib_format_box', $post_type, $value['context'], $value['priority']); } } //Formatting function plib_format_box() { global $meta_box, $post; // verification echo '<input type="hidden" name="plib_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; echo '<table …

2
如何创建带有搜索建议但不输入新术语的分类法元框?
我想知道如何在后编辑页面上设置一个类似于“标签”类型(带有搜索字段和自动建议)的分类法元框,但没有添加新术语的权利。 因此,例如,如果我输入一个单词,则会从现有术语列表中获得可以使用的术语建议,但是如果我键入一个不存在的单词,则不会将这些术语添加到列表中。 编辑 实际上,我正在寻找的正是菜单编辑器中“搜索”功能的行为: 由于这是WP的核心行为,有没有办法在后期编辑页面上使用它?我想知道,因为这些块看起来完全一样,都具有“查看全部”和“最新”选项卡,但是“搜索”仅出现在菜单编辑器中。

1
使用过滤器挂钩nav_menu_css_class将自定义类添加到wp_nav_menu
我在wordpress主题中有一个自定义帖子类型。我想在该自定义帖子类型中创建的页面的导航菜单中添加一个自定义类。我读到您可以使用过滤器钩子:“ nav_menu_css_class”,但是我的php剁非常有限。如何设置该过滤器挂钩,使其仅应用于导航菜单中的自定义帖子类型页面,并为其提供自定义类?
8 menus 

1
包和子包有何注释?
这包含在主题和插件中。 /* * @package WordPress * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ 他们是干什么的?我读过它们是标准的,依此类推,但是它的实际用途是什么?

4
少CSS enqueue_style与add_filter更改rel属性
我想做的是在Wordpress中使用更少的CSS。 您应该将rel属性设置为'stylesheet / less'链接到.less文件。但是我不知道如何更改enqueue_style输出的代码。 有没有办法应用过滤器并影响输出? 编辑:如果有人对我最终如何使它起作用感到好奇,请参见以下代码片段: function enqueue_less_styles($tag, $handle) { global $wp_styles; $match_pattern = '/\.less$/U'; if ( preg_match( $match_pattern, $wp_styles->registered[$handle]->src ) ) { $handle = $wp_styles->registered[$handle]->handle; $media = $wp_styles->registered[$handle]->args; $href = $wp_styles->registered[$handle]->src . '?ver=' . $wp_styles->registered[$handle]->ver; $rel = isset($wp_styles->registered[$handle]->extra['alt']) && $wp_styles->registered[$handle]->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; $title = isset($wp_styles->registered[$handle]->extra['title']) ? …

3
按元数据日期订购(整个网站上的)帖子
我的自定义“主页”页面设置为通过自定义日期字段对我的自定义帖子进行排序,并使用functions.php中的以下代码(已更新为自定义名称): // sort order for home page add_action('wp', 'wwgo_check_page'); function wwgo_check_page () { if (is_page()) { add_filter('get_previous_post_sort', 'sort_it'); add_filter('get_next_post_sort', 'sort_it'); add_filter('posts_orderby', 'sort_it' ); add_filter('posts_join', 'join_it' ); add_filter('posts_where', 'where_it' ); function sort_it () { global $wpdb; return " $wpdb->postmeta.meta_value ASC "; } function join_it( $join ) { global $wpdb; $join .= …

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.