嘿伙计们,我在编写主题短代码时遇到了一些麻烦.我希望代码显示带有视图计数器功能的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: …
是否可以在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) 我有一个正则表达式的问题,我写的匹配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中的正则表达式.
你能帮忙吗?我真的很沮丧.
好的,所以你可以在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)
我有点不确定如何将它放入模板文件中.
将一些内容从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()完成,但我没有运气.
我希望做的短代码格式是:[product id ="id#"] do_shortcode的格式是:do_shortcode('[shortcode');
我的问题是我如何插入一个PHP变量作为id#?
我有一个变量$ itemid,我想这样使用:
echo do_shortcode('[product id="$itemid"])
Run Code Online (Sandbox Code Playgroud)
但我不能为我的生活让它工作.任何建议将不胜感激.
我想修改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)
我做错了什么吗,还是有另一种/更好的方式来修改简码的输出?
我创建了一个函数来显示一些带有短代码的产品,但我遇到的问题是错误消息未显示在该页面上。例如,如果某些字段是必需的,那么它只会显示在购物车/结帐页面上。
这是我的一些代码:
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)
我需要添加什么才能在使用短代码的页面上显示错误消息?
我目前正在为 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)
任何在正确方向上的帮助或推动都非常感谢!
在 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)