Shortcode not being executed

时间:2020-01-03 作者:Karl Bochert

我将以下代码放在WP“init”回调中(或加载插件时)。

add_shortcode(\'my_shortcode\',
               function($atts, $content =\'\') { die(); }
             );
if (!shortcode_exists(\'my_shortcode\')) die();
在我的页面中,我放入“[my_shortcode]“”

当我查看页面时,我得到“****”

知道我的代码怎么了吗?

更新:我简化了问题。

我在主题索引中添加了短代码定义。php文件。

<?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package GeneratePress
 */

if ( ! defined( \'ABSPATH\' ) ) {
    exit; // Exit if accessed directly.
}

add_shortcode(\'myt_active_plugins\',
             function($atts, $content, $name) {
                    return \'Shortcode injected\';
                  }
            );
我停用了所有插件。

I(重新)安装WP3.5.2

我创建了一个帖子:

Welcome *[myt_active_plugins]*
我发表了这篇文章,当我看到它时,我得到了:

Welcome **
作为最后的检查,我安装了一个shortcode插件(Shortcodes Ultimate),它的作用是一样的。

2 个回复
SO网友:Hector

欢迎

使用die 函数,您正在停止该进程,它将在运行快捷码回调后立即停止。最好让其余的代码执行。

您需要在短码回调函数中返回一些内容,而不是使用dieecho.

因此,将您的代码更改为类似以下代码的代码,应该可以正常工作。你可以自由包装init

add_shortcode(
    \'my_shortcode\',
    function($atts, $content =\'\') {
        return \'This is from My shortcode!\';
    }
);
检查短码存在的条件有问题。如果要检查页面中是否存在某个短代码,has_shortcode 作用检查has_shortcode 文件here.

SO网友:Ahmedhere

You can try that.

add_shortcode(\'my_shortcode\', \'my_shortcode_function\');
function my_shortcode_function( $content ) 
{
    ob_start();
    // do something to $content
    echo $content;
    return ob_get_clean();
}

相关推荐

Gutenberg Shortcode Fail

WP 5.2.2是否可以在古腾堡短代码块之外渲染短代码?我创建了一个短代码,多年来一直在几页上使用它。在那些页面上效果很好。。。我害怕编辑它们,害怕它们被破坏:/我创建了一个新页面,我想在其上使用短代码。但是,未处理短代码。我尝试过通过代码编辑器插入它,并在html块中使用它。无论哪种方式,它都无法渲染。如果我创建一个短代码块并将我的短代码放在其中,它就会工作。然而,由于我使用短代码来填充隐藏的表单字段,我不相信这个选项对我有用。我的测试中没有。示例: <form action=\"https://