Php WordPress将变量传递到另一个短代码

Php WordPress将变量传递到另一个短代码,php,wordpress,Php,Wordpress,我有来自不同开发人员的多个插件,可以显示Amazon产品。 他们都要求我在他们的短代码中输入亚马逊分类ID [amazon bestseller="1234567"] [amz_links node="1234567"] [amazon_toprated category="1234567"] 我在大量页面、小部件等中使用这些短代码。 我时不时地需要更改ID,手动更改它们是一件非常麻烦的事情 我的想法是创建自己的短代码,比如[myamazon\u id],然后在其他短代码中输入该短代码:[am

我有来自不同开发人员的多个插件,可以显示Amazon产品。 他们都要求我在他们的短代码中输入亚马逊分类ID

[amazon bestseller="1234567"]
[amz_links node="1234567"]
[amazon_toprated category="1234567"]
我在大量页面、小部件等中使用这些短代码。 我时不时地需要更改ID,手动更改它们是一件非常麻烦的事情

我的想法是创建自己的短代码,比如
[myamazon\u id]
,然后在其他短代码中输入该短代码:
[amazon畅销书=“[myamazon\u id]”]

不幸的是,这似乎不起作用,因为这些是自封闭的短代码,显然不允许在短代码内部使用短代码

[amazon bestseller="1234567"]
[amz_links node="1234567"]
[amazon_toprated category="1234567"]
我目前的解决方案是使用一个插件,允许我在WordPress页面和小部件中使用PHP

[insert_php]echo do_短码(“[amazon畅销书=“”.myamazonid()”);[/insert_php]

这确实有效,但我想知道是否有更好的解决方案将变量传递给短代码。在页面和小部件上直接使用PHP确实不是我喜欢的事情


我的目标是有这样的东西:
[amazon畅销书=“[myamazon\u id]”]

一个简单的解决方案就是插件。使用此插件,您可以创建3个新的短代码,其中包含3个具有类别ID的amazon短代码。现在,您可以使用新创建的短代码,如果您想更改类别ID,您只需在一个位置编辑它。

一个简单的解决方案就是插件。使用此插件,您可以创建3个新的短代码,其中包含3个具有类别ID的amazon短代码。现在您可以使用新创建的短代码,如果您想更改类别ID,您只需在一个位置编辑它。

使用类似的短代码>[amazon bestseller=“myamazon_ID”]可以使用以下代码

您不需要用这些大括号将另一个短代码括起来。“[”和
“]”


使用类似的短代码
[amazon bestseller=“myamazon\u id”]
可以使用以下代码

您不需要用这些大括号将另一个短代码括起来。“[”和
“]”


首先,您必须在函数中定义$atts项,因为$atts是一个数组

以下是在短代码中传递变量的完整代码-

假设您需要通过短代码显示类别的所有产品,您需要在函数文件中执行以下代码-

     function creative_writing_func($atts) {
     $args = array(
    'post_type'      => 'product',
    'posts_per_page' => 10,
    'product_cat'    => $atts['categoryname']
);

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();
    global $product;
    echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>';
endwhile;

wp_reset_query();
}

add_shortcode('creative_writing_func_short', 'creative_writing_func');
我们在短代码中传递类别名称(创造性写作英语文学)


您已经对它进行了测试,并且它正在工作。

首先,您必须在函数中定义$atts项,因为$atts是一个数组

以下是在短代码中传递变量的完整代码-

假设您需要通过短代码显示类别的所有产品,您需要在函数文件中执行以下代码-

     function creative_writing_func($atts) {
     $args = array(
    'post_type'      => 'product',
    'posts_per_page' => 10,
    'product_cat'    => $atts['categoryname']
);

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();
    global $product;
    echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>';
endwhile;

wp_reset_query();
}

add_shortcode('creative_writing_func_short', 'creative_writing_func');
我们在短代码中传递类别名称(创造性写作英语文学)


我已经测试过了,它正在工作。

这看起来是一个很好的解决方案,但我无法让它工作。短代码的行为就像没有提供ID一样,这让我相信
first\u shortcode\u amazon
函数不会将
myamazon\u ID
解析为短代码,而是将其解析为普通文本。这看起来是一个很好的解决方案,但我无法让它工作。短代码的行为就像没有提供ID一样,这让我相信
first\u shortcode\u amazon
函数不会将
myamazon\u ID
解析为短代码,而是将其解析为普通文本。