我目前正在构建自己的插件并进行测试,以确保一切正常
我使用register\\u settings()在后端创建了一个表单,我在表单中填充了信息,检索信息没有问题。在我的帖子编辑中,我写下[项目列表],我的短代码,这是我在前端得到的。
最后,您可以看到1。有点像分页,但不是。当我检查这个时,它只是一个文本框架。然后我在编辑器中输入了几个短代码([项目列表][项目列表][项目列表][项目列表][项目列表]),然后我得到了以下结果:
又是几个1!这次他们都在同一个p标签上。我不知道这些1是从哪里来的。
这是我的布局PHP文件:
<?php
$title = get_option( "set_title" );
$icon = get_option( "choose_icon" );
$desc = get_option( "set_description" );
?>
<ul>
<li><?php echo $icon; ?></li>
</ul>
<div>
<div>
<span>
<?php echo $icon; ?>
</span>
<span>
<?php echo $title; ?>
</span>
</div>
<div>
<p>
<?php echo $desc; ?>
</p>
</div>
</div>
即使我创建了一个新的帖子或页面并添加了短代码,结果也是一样的。当我删除短代码并编写一些文本时,no 1。有人知道为什么会这样吗?
短代码:
<?php
/**
* @package XXXXX
*/
namespace Inc\\API;
use Inc\\Base\\BaseController;
/*
Basecontroller declares the plugin_path variable.
$this->plugin_path = plugin_dir_path( dirname( __FILE__, 2 ) );
it directions to the root dir.
*/
class ShortcodeList extends BaseController {
public function listLayout() {
return require( $this->plugin_path . "/admin/itemList.php" );
}
public function register() {
add_shortcode( "ItemList", array( $this, "listLayout") );
}
}
最合适的回答,由SO网友:Tom J Nowell 整理而成
这是您的问题:
public function listLayout() {
return require( $this->plugin_path . "/admin/itemList.php" );
}
短代码需要以字符串形式返回其输出,但事实并非如此。快捷码直接输出,而不是在正确的时间由WordPress输出。如果使用嵌套的短代码,这将变得非常明显,因为显示顺序不正确。
这一错误进一步加剧,因为require
不返回输出,而是返回成功/失败。因为它找到并加载了admin/itemList.php
它回来了1
, 这就是尾随1
来自。
要解决此问题,请使用输出缓冲区来捕获输出。