当前位置: 首页 > 知识库问答 >
问题:

WordPress–如何在PHP文件中使用短代码

卫博学
2023-03-14

我用WooCommerce插件设置了WordPress,产品被循环输出...直到那里。

我想增加访问者能够投票支持产品的可能性。所以我在找一个插件,找到了一个。

但这才是真正的问题!名为“喜欢照片”的插件为我提供了WordPress简码功能。如果我在WordPress编辑器中插入短代码(图像前后),一切都工作正常。

但是我需要把代码放在PHP文件(循环输出产品的文件)本身。

因此,我尝试使用PHP echo函数作为短代码,如下所示。根本不起作用。当我在浏览器中打开inspector工具时,我只看到以文本形式呈现的第二个短代码部分,它应该创建一个div(当我在WordPress post编辑器中粘贴短代码时,它会做什么)。

我怎样才能解决这个问题?

 <?php echo do_shortcode('[add_voting]'); ?> <!-- shortcode beginning-->

    <?php do_action( 'woocommerce_before_shop_loop_item' ); ?> <!-- The loop for the items-->
    <div class="image-box">
        <div class="voteup_layer">
                <div class="voteup_layer_triangle">
                    <div class="voteup_layer_triangle-inner"></div>
                </div>
                <p>CLICK 2 UPVOTE</p>
        </div>
        <div class="sb_title"><?php the_title(); ?></div>
        <div class="arrow-up"></div>
        <div id="num-id" class="count-num">20.453</div>


        <a href="<?php the_permalink(); ?>">
            <?php
                /**
                 * woocommerce_before_shop_loop_item_title hook
                 *
                 * @hooked woocommerce_show_product_loop_sale_flash - 10
                 * @hooked woocommerce_template_loop_product_thumbnail - 10
                 */
                do_action( 'woocommerce_before_shop_loop_item_title' );
                if ( has_post_thumbnail() ) {
                    //echo get_the_post_thumbnail( get_the_ID(), array(370,370) );
                    echo get_the_post_thumbnail( get_the_ID(), 'home-small-box' );

                }
            ?>
        </a>
    </div>
    <?php echo do_shortcode('[/add_voting]'); ?> <!-- shortcode end-->

我得到了这个HTML输出:

<div class="home_small_box ">
    <div class="image-box">
        <div class="voteup_layer">
            <div class="voteup_layer_triangle">
                <div class="voteup_layer_triangle-inner"></div>
            </div>
            <p>CLICK 2 UPVOTE</p>
        </div>
        <div class="sb_title">FOSSIL <br> <span class="thin">Moon Explorer</span></div>
        <div class="arrow-up"></div>
        <div id="num-id" class="count-num">20.453</div>
        <a href="http://online.com/product/fossil-moon-explorer/">
        <img width="360" height="360" src="http://online.com/wp-content/uploads/2015/08/shopping-1-360x360.jpg" class="attachment-home-small-box wp-post-image" alt="shopping-1">
         </a>
    </div>
    "[/add_voting]"

And want(这是我在WordPress编辑器中添加短代码后HTML的呈现方式–它在我放置短代码的图像周围创建一个名为“like photo wrapper”的div,并添加投票功能):

<div class="like-photo-wrapper">
  <a href="http://online.com/wp...2.jpg">
    <img src="http://online.com/wp...300.jpg" alt="shopping-2" >
  </a>
 <div class="votes"><span class="currentVotes">Votes:  0</span>
 <a href="http://online.com" title="vote on this image">vote on this image</a>
 </div>
</div>

短代码在我的PHP代码中无法正常工作。

共有1个答案

戈正初
2023-03-14

查看do_短代码的文档。

其要点是,对包装内容的短代码调用do\u shortcode,应该是这样的

// In case there is opening and closing shortcode.
echo do_shortcode( '[iscorrect]' . $text_to_be_wrapped_in_shortcode . '[/iscorrect]' );

您可以尝试使用输出缓冲来捕获输出并将其传递到您的短代码中。

ob_start();

<?php do_action( 'woocommerce_before_shop_loop_item' ); ?> <!-- The loop for the items-->
<div class="image-box"> 
    <div class="voteup_layer">
            <div class="voteup_layer_triangle">
                <div class="voteup_layer_triangle-inner"></div>
            </div>
            <p>CLICK 2 UPVOTE</p>
    </div>
    <div class="sb_title"><?php the_title(); ?></div>
    <div class="arrow-up"></div>
    <div id="num-id" class="count-num">20.453</div>


    <a href="<?php the_permalink(); ?>">
        <?php
            /**
             * woocommerce_before_shop_loop_item_title hook
             *
             * @hooked woocommerce_show_product_loop_sale_flash - 10
             * @hooked woocommerce_template_loop_product_thumbnail - 10
             */
            do_action( 'woocommerce_before_shop_loop_item_title' );
            if ( has_post_thumbnail() ) {
                //echo get_the_post_thumbnail( get_the_ID(), array(370,370) );          
                echo get_the_post_thumbnail( get_the_ID(), 'home-small-box' );          

            }
        ?>
    </a>        
</div>
$out = ob_get_clean();
<?php echo do_shortcode('[add_voting] ' . $out . '[/add_voting]'); ?> <!-- shortcode end-->
 类似资料:
  • 我想在我的自定义PHP文件中显示wpdatatables(插件),所以我想使用“do_shortcode()”函数,但没有任何效果,它只是显示白色屏幕。 我的php文件代码:

  • 我有一个短代码(outputURL),用于将值输出到URL中。该值从短代码(valueURL)中检索。valueURL输出是文本包装在div中: 我只需要textForURL值,不包括div标记。到目前为止,我只能输出div标记和文本,而不能输出纯文本的干净版本。 这是我的简码函数: 我进行了研究,并能够将其整合在一起,但我不确定我是否朝着正确执行的方向前进。任何能帮助我实现目标的人都将不胜感激。

  • 我有一个wordpress插件,可以上传用户头像。我正在尝试使用一段显示缩略图的代码,并将其放在一个短代码中,这样我就可以将缩略图放在网站的任何位置。 我对php比较陌生,我知道如何为wordpress启动一个短代码,但我不知道如何构造短代码来承载php。有谁能给我提个建议吗? php下面的代码是插件文件的原文: 我想放在短代码中的代码如下,基本上它显示了缩略图。我试图用这个在functions.

  • 这些是自定义字段组合: 1组页脚 1.1组列2 1.1.1 bbcimg(这是图像ID) 1.1.2 bbc-rss(这是RSS提要ID) 我有以下显示bbc rss的代码: 我创建了具有以下属性的图像字段 bbcimg: 字段标签:bbcimg 字段名称:bbcimg 字段类型:图像 说明:- 必填项:否 返回格式:图像数组 预览大小:中等(300x300) 图书馆:全部 最小值:宽度40px,

  • 我正在一个WordPress网站上工作,该网站一直在使用一个插件来使用短代码抓取亚马逊产品图像。 只需将书的asin插入短代码,如下所示: 加载post时,使用来自amazon的URL将短代码转换为实际的图像HTML。。。。因此,上面的示例将返回 我正在使用另一个自定义插件来构建帖子的内容,到目前为止,我只是使用这个短代码作为帖子内容的一部分。我想做一些其他的事情,如设置特色图片等,并需要该网址。

  • 问题内容: 我有一个带有2个下拉框的Wordpress网站。当我在第一个下拉框中选择一个选项时,我希望第二个选项被PHP函数中的数据刷新。为此,我需要ajax。但是我正在努力将Ajax绑定到Wordpress中。 HTML看起来像这样: 现在,例如,当用户选择“销售”时,我希望第二个选择标签重新加载来自PHP数组的匹配价格。 PHP函数如下所示: 我将jQuery Ajax调用保存在单独的.js文