我正在使用WP Job Manager 插件。
我想在[job\\u dashboard]页面上创建一个链接,允许用户对自己的工作进行特色化。
我已将此代码添加到作业仪表板。php:
echo \'<li><a href="\' . update_post_meta( $job->ID, \'_featured\', 1 ) . \'">Featured</a></li>\';
但这是我所有的工作,而不是我点击链接的那个。我怎样才能使我点击的那个成为特色?
我正在使用WP Job Manager 插件。
我想在[job\\u dashboard]页面上创建一个链接,允许用户对自己的工作进行特色化。
我已将此代码添加到作业仪表板。php:
echo \'<li><a href="\' . update_post_meta( $job->ID, \'_featured\', 1 ) . \'">Featured</a></li>\';
但这是我所有的工作,而不是我点击链接的那个。我怎样才能使我点击的那个成为特色?
简而言之:你做错了。
update_post_meta
实际上会更新字段,因此每当代码运行时_featured
更新为1
. 无需单击,实际上是告诉它立即更新值。您应该做的是让您的链接指向一个可以在单击链接时处理请求的页面:
echo \'<li><a href="\' . add_query_arg( \'set_featured_id\', $job->ID ) . \'">Featured</a>\';
然后,处理该信息:add_action( \'init\', function() {
$job_id = filter_input( INPUT_GET, \'set_featured_id\', FILTER_VALIDATE_INT );
if ( null === $job_id ) {
return;
}
update_post_meta( $job_id, \'_featured\', 1 );
});
然而,上述解决方案确实不安全。您可能应该查看一些函数来“判断”用户是否可以这样做,例如current_user_can
- 您还可以将此作为表单提交的一部分进行研究,这将允许您利用wp_nonce_field
还有一些额外的安全性。我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。