标签: shortcode

问题在Wordpress中返回短代码内的函数

嘿伙计们,我在编写主题短代码时遇到了一些麻烦.我希望代码显示带有视图计数器功能的div,然后是带有shotcodes内容的链接作为url.

view_count(); 函数在主题文件中调用时工作正常,我实际上设法让它显示,但然后它显示在the_content()之前; 帖子(灰色条),当我想要它在元素下的内容中时.

(1)这是我得到的:

function video_block( $atts, $content = null ) { 
    return '<div class="video-block"><span class="ViewCount"><?php the_views(); ?></span> <a class="dl-source" href="' . $content . '">Link</a></div>';
}
Run Code Online (Sandbox Code Playgroud)

(2)这是在页面顶部显示的代码:

function video_block( $atts, $content = null ) { ?>
    <div class="video-block"><span class="ViewCount"><?php the_views(); ?></span> <a class="dl-source" href="<?php echo $content; ?>">Link</a></div>
<?php }
Run Code Online (Sandbox Code Playgroud)

(3)此代码显示上面的内容视图,以及正确位置的链接:

function video_block( $atts, $content = null ) {
    $views = the_views();
    return '<div class="video-block"><span class="ViewCount"><?php $views; ?></span> <a class="dl-source" href="<?php echo $content; ?>">Link</a></div>';
}
Run Code Online (Sandbox Code Playgroud)

我在Wordpress论坛的某个地方读到你应该在函数中返回(而不是echo)值,但这会破坏它,显示视图计数,跳过html并吐出$ content.

以下是相关页面的链接:http: …

php wordpress function shortcode

3
推荐指数
1
解决办法
4907
查看次数

Wordpress从内容中删除短代码

是否可以在the_content()执行之前从内容中删除图库短代码?我搜索了codex remove_shortcode( $tag )但发现它们没有显示任何例子.

我尝试添加功能

function remove_gallery($content) {
    $content .= remove_shortcode('[gallery]');
    return $content;
}
add_filter( 'the_content', 'remove_gallery', 6); 
Run Code Online (Sandbox Code Playgroud)

它不起作用..

更新:

我能够使用下面的代码取消注册短代码,但它也删除了内容

function remove_gallery($content) {
    return remove_shortcode('gallery', $content);
}
add_filter( 'the_content', 'remove_gallery', 6); 
Run Code Online (Sandbox Code Playgroud)

wordpress function filter shortcode

3
推荐指数
2
解决办法
2万
查看次数

PHP中的短代码的正则表达式模式

我有一个正则表达式的问题,我写的匹配PHP中的短代码.

这是模式,其中$shortcode是短代码的名称:

\[$shortcode(.+?)?\](?:(.+?)?\[\/$shortcode\])?
Run Code Online (Sandbox Code Playgroud)

现在,这个正则表达式对这些格式表现得非常好:

  • [shortcode]
  • [shortcode=value]
  • [shortcode key=value]
  • [shortcode=value]Text[/shortcode]
  • [shortcode key1=value1 key2=value2]Text[shortcode]

但它似乎有最常见格式的问题,

  • [shortcode]Text[/shortcode]

返回匹配以下内容:

Array
(
    [0] => [shortcode]Text[/shortcode]
    [1] => ]Text[/shortcode
)
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个匹配(应该是文本,因为第一个是可选的)包括开始标记的结尾和所有结束标记但最后一个括号.

编辑:发现返回的匹配是第一次捕获,而不是第二次捕获.请参阅Regexr中的正则表达式.

你能帮忙吗?我真的很沮丧.

php regex shortcode

3
推荐指数
2
解决办法
8981
查看次数

如何在Wordpress模板文件中添加结束短代码?

好的,所以你可以在WP模板文件中添加短代码,例如:

<?php echo do_shortcode('[my_awesome_shortcode]'); ?>
Run Code Online (Sandbox Code Playgroud)

但是如果短代码打算包含这样的内容呢:

[my_awesome_shortcode]
Hey, this is the content within the awesome shortcode.
[/my_awesome_shortcode]
Run Code Online (Sandbox Code Playgroud)

我有点不确定如何将它放入模板文件中.

php wordpress templates shortcode

3
推荐指数
2
解决办法
8022
查看次数

正则表达式从[shortcode]中提取变量

将一些内容从WordPress迁移到Drupal之后,我得到了我需要转换的som短代码:

字符串内容:

不相关的tekst ... [sublimevideo class ="sublime"poster ="http://video.host.com/_previews/600x450/sbx-60025-00-da-ANA.png"src1 ="http:// video. host.com/_video/H.264/LO/sbx-60025-00-da-ANA.m4v"src2 ="(hd)http://video.host.com/_video/H.264/HI/sbx- 60025-00-da-ANA.m4v "width ="560"height ="315"] ..更无关紧要的文字.

我需要找到短代码[sublimevideo ...]中的所有变量并将其转换为数组:

Array (
    class => "sublime"
    poster => "http://video.host.com/_previews/600x450/sbx-60025-00-da-FMT.png"
    src1 => "http://video.host.com/_video/H.264/LO/sbx-60025-00-da-FMT.m4v"
    src2 => "(hd)http://video.host.com/_video/H.264/HI/sbx-60025-00-da-FMT.m4v"
    width => "560"
    height => "315"
)
Run Code Online (Sandbox Code Playgroud)

并且优选地处理短代码的多个实例.

我想可以用preg_match_all()完成,但我没有运气.

php regex drupal shortcode

3
推荐指数
2
解决办法
6405
查看次数

PHP在do_shortcode()中使用变量 - Wordpress页面模板

我希望做的短代码格式是:[product id ="id#"] do_shortcode的格式是:do_shortcode('[shortcode');

我的问题是我如何插入一个PHP变量作为id#?

我有一个变量$ itemid,我想这样使用:

echo do_shortcode('[product id="$itemid"])
Run Code Online (Sandbox Code Playgroud)

但我不能为我的生活让它工作.任何建议将不胜感激.

php wordpress shortcode

3
推荐指数
2
解决办法
1万
查看次数

将过滤器应用于WordPress短代码输出

我想修改WordPress插件的简码输出。

我尝试了以下方法:

$myShortcode = do_shortcode('[print_responsive_thumbnail_slider id="1"]');
echo apply_filters('new_shortcode_filter',$myShortcode);


add_filter('new_shortcode_filter','new_shortcode_filter_callback');

function new_shortcode_filter_callback($myShortcode){
    //modify content right here

    return $modifiedContent;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,该过滤器未应用于短代码输出。

如果我这样做是为了覆盖简码并修改输出,那么do_shortcode函数将导致无限循环:

function update_shortcode_slider_content() {
    $sliderContent = do_shortcode('[print_responsive_thumbnail_slider id="1"]');;
    //some magic

    return $modifiedSliderContent;
}
add_shortcode('print_responsive_thumbnail_slider', 'update_shortcode_slider_content');
Run Code Online (Sandbox Code Playgroud)

我做错了什么吗,还是有另一种/更好的方式来修改简码的输出?

wordpress shortcode

3
推荐指数
1
解决办法
5053
查看次数

在页面上显示 Woocommerce 通知

我创建了一个函数来显示一些带有短代码的产品,但我遇到的问题是错误消息未显示在该页面上。例如,如果某些字段是必需的,那么它只会显示在购物车/结帐页面上。

这是我的一些代码:

while ( $query->have_posts() ) : $query->the_post();
global $product;
?>
<div style="border-bottom:thin dashed black;margin-bottom:15px;">
<h2><?php the_title(); ?>  <span><?php echo $product->get_price_html();?></span></h2>
<p><?php the_excerpt();?></p>
<?php global $product;
if( $product->is_type( 'simple' ) ){
woocommerce_simple_add_to_cart();
}
Run Code Online (Sandbox Code Playgroud)

我需要添加什么才能在使用短代码的页面上显示错误消息?

php wordpress product shortcode woocommerce

3
推荐指数
1
解决办法
1万
查看次数

在 Woocommerce 3.3 中为产品短代码使用自定义分类法

我目前正在为 Woocommerce 网站开发主页,在此页面上的目标是让 3 行显示来自不同品牌的产品。例子; 第一排将展示苹果产品,第二排将展示三星产品,第三排将展示HTC产品。

我使用插件 CPT UI 创建自定义分类法“品牌”。现在我希望使用上面的示例仅显示特定品牌下列出的产品。

查看 Woocommerce Shortcodes,我看到了这个:

[products limit="8" columns="4" category="hoodies, tshirts" cat_operator="AND"]
Run Code Online (Sandbox Code Playgroud)

是否可以使用此案例品牌的自定义分类法来做这样的事情?IE:

[products limit="8" columns="4" brand="apple" cat_operator="AND"]
Run Code Online (Sandbox Code Playgroud)

任何在正确方向上的帮助或推动都非常感谢!

php wordpress shortcode custom-taxonomy woocommerce

3
推荐指数
1
解决办法
2099
查看次数

从 Woocommerce 中显示为列表的 SQL 查询中获取订单

在 woocommerce 中,我正在尝试创建一个短代码以放入我的function.php文档中,该代码在页面上显示自定义数据库查询。虽然它有问题,但我不确定是什么。

function sqlquery_shortcode($atts) {
    global $wpdb;
    $results = $wpdb->get_results("
        SELECT a.order_id, a.order_item_id, a.order_item_name, b.meta_key, b.meta_value
        FROM 7pW9iX3L_woocommerce_order_items a
        JOIN 7pW9iX3L_woocommerce_order_itemmeta  b 
            ON a.order_item_id = b.order_item_id
        JOIN 7pW9iX3L_posts c               
            ON a.order_id = c.ID
        JOIN 7pW9iX3L_postmeta d
            ON c.ID = d.post_id
        WHERE order_item_type = 'line_item'
    ");

    // Loop through each order post object
    foreach($results as $result) {
        $order_id = $result->ID; // The Order ID

        // Get an instance of the WC_Order Object
        $order = wc_get_order( $result->ID );
    } …
Run Code Online (Sandbox Code Playgroud)

php sql shortcode orders woocommerce

3
推荐指数
1
解决办法
1140
查看次数