我想使用WP最近的帖子小部件,但设置为按帖子的修改日期排序.

我在网上找到了这个片段,并try 了一下:

add_filter('widget_posts_args', 'filter_recent_posts_widget_parameters');

function filter_recent_posts_widget_parameters($args, $instance) {
   $args['orderby'] = 'modified';
   return $args;
} 

然而,当我这样做时,小部件从侧边栏中消失了.我收到一个错误(使用wp调试):

Fatal error: Uncaught ArgumentCountError: Too few arguments to function filter_recent_posts_widget_parameters(), 1 passed in /home/rev/public_html/wp-includes/class-wp-hook.php on line 326 and exactly 2 expected in /home/rev/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(581) : eval()'d code:3 Stack trace: #0 /home/rev/public_html/wp-includes/class-wp-hook.php(326): filter_recent_posts_widget_parameters() #1 /home/rev/public_html/wp-includes/plugin.php(205): WP_Hook->apply_filters() #2 /home/rev/public_html/wp-includes/widgets/class-wp-widget-recent-posts.php(73): apply_filters() #3 /home/rev/public_html/wp-includes/class-wp-widget.php(394): WP_Widget_Recent_Posts->widget() #4 /home/rev/public_html/wp-includes/widgets.php(837): WP_Widget->display_callback() #5 /home/rev/public_html/wp-content/themes/generatepress/sidebar.php(22): dynamic_sidebar() #6 /home/rev/public_html/wp-includes/template.php(790): require_once('...') #7 /home/rev/public_html/wp-includes/template.php(725): load_template() #8 /home/rev/public_html/wp-includes/general-template.php(136): locate_template() #9 /home/rev/public_html/wp-content/themes/generatepress/inc/structure/sidebars.php(34): get_sidebar() #10 /home/rev/public_html/wp-content/themes/generatepress/page.php(57): generate_construct_sidebars() #11 /home/rev/public_html/wp-includes/template-loader.php(106): include('...') #12 /home/rev/public_html/wp-blog-header.php(19): require_once('...') #13 /home/rev/public_html/index.php(17): require('...') #14 {main} thrown in /home/rev/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(581) : eval()'d code on line 3

如果我不使用这个片段(尽管是按发布日期排序的),那么最近发布的帖子小部件就可以工作.我如何调整此代码以使其与修改日期的订单一起工作?

谢谢,

克里斯

推荐答案

要解决此问题,请修改您的代码以确保函数可以正确处理这两个参数.像这样;

add_filter('widget_posts_args', 'filter_recent_posts_widget_parameters', 10, 2);
function filter_recent_posts_widget_parameters($args, $instance) {
$args['orderby'] = 'modified';
return $args;
}

try 使用这个更新的代码,它应该可以解决您遇到的"参数太多"的错误.

谢谢

Php相关问答推荐

当我们使用PHPUnit时,控制台中的--uses param到底起了什么作用以及如何使用?

产品ACF值在WooCommerce我的账户订单的附加列中为空

PHP php_mongodb.dll for 32bit

如何使用`preg_replace`删除重复的空格字符

WooCommerce:有条件地更改特定区域的发货类别

Laravel 10 -扩展现有的artisan命令?

通过访问单个产品页面更新WooCommerce产品元数据

在WooCommerce中添加特定产品类型的百分比费用和固定费用

PHP Match如何准确判断条件?

如何在codeigniter中将order_by RAND与下面的代码一起使用

需要以一种形式执行两个操作

将 PHP 版本更改为 8.1,但 WordPress 认为我们正在使用版本 7.4?

产品页面自定义复选框可对 WooCommerce 购物车小计启用百分比折扣

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

在wordpress注销后防止后退操作

正则表达式 (php) 匹配单个 [ 或单个 ] 但忽略 [[ ]] 之间的任何内容?

PHP 将数组值插入到 csv 列

Eloquent 的模型更新了它应该 laravel php 的更多行

为什么非贪婪匹配会消耗整个模式,即使后面跟着另一个非贪婪匹配

PHP获取根据辞职日期自动续订的合同终止日期