将标记名称与表单标题匹配

时间:2021-05-10 作者:Adam Alleman

我正在尝试将标签名称与表单标题匹配,以便将正确的表单提取到当前帖子中,订阅使用当前帖子标签标记的新帖子。我每个帖子只分配了一个标签。

categories的代码工作得很好,我尝试将其转录为标记,但我担心代码中存在语法错误,因为它不起作用。

如何编写正确的代码?

add_shortcode( \'subscribe-to-tag\', function() {
   global $wpdb, $post;
 
$the_tag = get_the_tags( $post->ID );
$tag_name = $the_tag[0]->tag_name;
   $id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM wptq_forms WHERE name = \'{$tag_name}\';"));
   if (is_null($id)) { return \'\'; }
   return do_shortcode( \'[newsletter_form id="\' . intval( $id ) . \'"]\' );
} ); 

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我在您的代码中没有看到PHP语法错误(如不需要的括号),但有两个特定于WordPress的问题需要解决:

请注意wpdb::prepare() 需要一个或多个占位符(例如。%s 对于字符串和%d ,以及每个占位符的替换值。

所以在你的情况下$wpdb->prepare() 将是:

$wpdb->prepare( "SELECT ID FROM wptq_forms WHERE name = %s", $tag_name );
  • get_the_tags() 在成功请求时返回术语对象数组,每个对象都是WP_Term 不具有tag_name 仅限属性name.

    因此$the_tag[0]->tag_name 应改为$the_tag[0]->name.

  • 相关推荐

    MySQL:创建用于搜索字符串和替换的SQL查询

    我需要删除一个恶意字符串从2176个字段后,url重定向黑客。我对SQL非常熟悉,所以非常感谢您的帮助。我有MYSQL ClI或PHPmyAdmin可用。详情如下数据库是:Wordpress表是:wp\\u posts列是:post\\u content字符串是: <script src=\'https://https://xyz/js.php?s=q\' type=\'text/javascript\'></script><script src=\'https://http