带有插件的WordPress快捷码回调函数

时间:2014-12-23 作者:user1048676

我正在开发一个插件,该插件目前在管理部分工作得很好,但我正在尝试将功能扩展到前端,并使用一个短代码来使用相同的功能。我有一个当前显示的表单,其代码如下:

function display_sheet_form($f=array())
{

    $count = (isset($f[\'task_title\'])) ? count($f[\'task_title\']) : 3;
    if ($count < 3) $count = 3;

    echo \'<form name="add_sheet" id="dls-sus-modify-sheet" method="post" action="">\';
    //some additional code here
    echo \'<input type="hidden" name="mode" value="submitted" />\';
    echo \'<input type="submit" name="Submit" class="button-primary" value="\'.esc_attr(\'Save\').\'" />\';
}
此表单没有操作,但它在子菜单中有一个函数回调,它知道要在同一页面中将此操作发布到该回调。子菜单的代码为:

add_submenu_page($this->admin_settings_slug.\'_sheets\', \'Add New Sheet\', \'Add New\', \'manage_signup_sheets\', $this->admin_settings_slug.\'_modify_sheet\', array(&$this, \'modify_sheet_page\'));
在那里,您可以看到回调函数是modify\\u sheet\\u页面。以下是此函数的代码:

function modify_sheet_page()
{
    if (!current_user_can(\'manage_options\') && !current_user_can(\'manage_signup_sheets\'))  {
        wp_die( __( \'You do not have sufficient permissions to access this page.\' ) );
    }
    echo "in the modify sheet page";
    // Set mode vars
    $edit = (empty($_GET[\'sheet_id\'])) ? false : true;
    $add = ($edit) ? false : true;
    $submitted = (isset($_POST[\'mode\']) && $_POST[\'mode\'] == \'submitted\');
    $err = 0;

    // Process form if submitted
    if($submitted) {
    //process the form code
    }
}
我创建的快捷码如下:

add_shortcode(\'create_sign_up_sheet\', array(&$this->admin, \'display_sheet_form\'));
目前,该操作是模板显示的页面,因为它不能使用子菜单页面的回调。如何发布到相同的modify_sheet_page() 使用此短代码的函数?

2 个回复
SO网友:ArmaDolphins

Rick的回答不正确,因为add_shortcode 指定;由短代码调用的函数应该永远不会产生任何类型的输出;。相反,您应该返回希望短代码输出的文本。因此,请尝试让display\\u sheet\\u form返回该文本,而不是回显它。

SO网友:Rick Hellewell

这个add_shortcode() 函数的第二个参数应该是输出文本/内容的函数。

在您的情况下,应该创建一个输出文本(或数组内容,但不是arrray)的函数,并在add\\u shortcode()中使用它。

add_shortcode(\'myshortcode\', \'myshortcodefunction\');
function myshortcodefunction() {
  // set some values
  echo \'some values\';
return;
}
然后,短代码[myshortcode]将转换为“一些值”。

看见https://developer.wordpress.org/reference/functions/add_shortcode/

结束

相关推荐

Shortcode won't execute

我用我有限的知识,google和stackexchange创建了一个短代码。但当我加载页面时,它会加载到页面内容上方,并显示为html文本。(shortocode text) ------- page contents appearing normally 正如我所说,我对这种类型的编码知识有限(零),我无法找出哪个部分/什么部分不起作用。我附加了我使用的代码的压缩版本,在shortcode函数中显示的内容更少。// Add Shortcode function p_fo