显示作者姓名PHP(自制插件)

时间:2022-02-22 作者:Faeb

我有一个需要帮助的问题,因为我自己找不到解决办法。

我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)

其工作原理如下:如果用户未登录,作者将成为“Hyperspace\\u Bot”。如果用户登录,将显示用户的作者名称。

现在的问题是:当登录的用户通过联系人表单创建帖子时,不会显示作者…。(https://gyazo.com/b51653a1c5fc08b875a50b926c7565d3)(https://gyazo.com/54e4067ecf1227831898a79e1577affa)正如您在屏幕截图上再次看到的,没有输入作者。目前,我总是必须在事后手动输入它们。

以下是插件代码的重要部分:

add_action(\'wpcf7_before_send_mail\', \'createPostData\' );

function createPostData() {
     //get user id
     //$user = get_userdatabylogin(\'myusername\');
     //$user = get_user_by(\'login\', $user_login);
     //$udi = $user->ID;

     get_currentuserinfo();

     if ($_POST[\'aut\'] == \'\') {
             // Create post object
             $my_post = array(
                     \'post_title\' => $_POST[\'title\'],
                     \'post_content\' => $_POST[\'Description\'],
                     \'post_status\' => \'pending\',
                     \'post_author\' => 3,
                     \'post_category\' => array($_POST[\'postcategory\'])
             );
     } else {
             $my_post = array(
                     \'post_title\' => $_POST[\'title\'],
                     \'post_content\' => $_POST[\'Description\'],
                     \'post_status\' => \'publish\',
                     //\'post_author\' => $user,
                     \'post_author\' => $user_ID,
                     \'post_category\' => array($_POST[\'postcategory\'])
             );
     }
问题在于“post\\u author”=>$第二部分中的User\\u ID我想…。我已经用get\\u current\\u user\\u id()或$author\\u id=get\\u the\\u author\\u meta(“id”)尝试了不同的方法,但找不到解决方案。

如果有人有主意,我将非常感激!

提前非常感谢。

最佳regardsFabian

整个插件:https://pastebin.com/8RFRPRLw

1 个回复
SO网友:Alex Smooth Websites

你的$my_post 数组包含\'post_author\' => $user_ID, 但是$user_ID 未定义。

根据WP codex, get_currentuserinfo 已弃用,应替换为wp_get_current_user. 但在这种情况下,您需要ID,因此更好的选择是get_current_user_id

因此,如果替换这一行:

get_currentuserinfo();
使用:

$user_ID = get_current_user_id();
你应该做生意。

相关推荐

如何重命名主php插件基础文件?

我上传了一个插件到WordPress。org存储库和一些人喜欢这个插件。我使用plugin.php 作为插件的基本名称。每次我更改某些内容时,我都想将主文件的名称更改为插件的名称。但如果我这样做,我认为用户会得到错误;插件已禁用,因为找不到它;。有没有办法为插件指定新的基名称,以便我可以重命名我的主php文件?