检索 WordPress 短代码

发布于 2024-12-01 05:36:07 字数 100 浏览 1 评论 0原文

我正在寻找检索页面上的短代码的对象(或数组)。所以基本上我有一个短代码,用户可以将锚点插入页面,并且我希望根据页面上的短代码动态输出菜单。有什么方法可以检索用户在页面渲染时放入的内容吗?

I'm looking to retrieve an object (or array) of the shortcodes on the page. So basically I have a shortcode where my user can insert anchors into a page, and I am looking to dynamically output a menu based on the shortcodes on the page. Is there any way to retrieve the ones a user has put in at page render?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知所踪 2024-12-08 05:36:07

以下是我为了能够将帖子的一部分放在侧边栏中所做的操作:

在 header.php 中定义一个全局变量来保存信息:

// Initialize sidebar content.
$GLOBALS['mySidebar'] = '';

短代码的每个实现都应该将信息添加到该全局变量中。我的短代码只是添加了短代码内容的 HTML,您应该捕获短代码的含义:

add_shortcode('sidebar', 'addToSidebar');

// Add content to the sidebar.
function addToSidebar($attributes, $content) {
    $GLOBALS['mySidebar'] .= do_shortcode($content);
    return '';
}

使用全局变量渲染页面元素:

<?php if (have_posts()) :
    the_post();

    // Get content first to retrieve the sidebar.
    $content = get_the_content();
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content); ?>

    <?php if (!empty($GLOBALS['mySidebar'])) :?>
        <div id="sidebar"> <?php echo $GLOBALS['mySidebar']; ?> </div>
    <?php endif; ?>
    <div id="content">
    ... render the post.
<?php endif; ?>

Here's what I did to be able to put parts of a post in a sidebar:

In header.php define a global varibale to hold the information:

// Initialize sidebar content.
$GLOBALS['mySidebar'] = '';

Each implementation of your shortcodes should add the information to that global variable. My shortcode just adds the HTML for the shortcode content, you should capture the meaning of the shortcode:

add_shortcode('sidebar', 'addToSidebar');

// Add content to the sidebar.
function addToSidebar($attributes, $content) {
    $GLOBALS['mySidebar'] .= do_shortcode($content);
    return '';
}

render the page elements, using the global variable:

<?php if (have_posts()) :
    the_post();

    // Get content first to retrieve the sidebar.
    $content = get_the_content();
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content); ?>

    <?php if (!empty($GLOBALS['mySidebar'])) :?>
        <div id="sidebar"> <?php echo $GLOBALS['mySidebar']; ?> </div>
    <?php endif; ?>
    <div id="content">
    ... render the post.
<?php endif; ?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文