Php 基于Woocommerce中的快捷码atts名称查询产品标题或slug

Php 基于Woocommerce中的快捷码atts名称查询产品标题或slug,php,wordpress,woocommerce,shortcode,product,Php,Wordpress,Woocommerce,Shortcode,Product,我想查询一个产品的标题或名称(slug)。下面的代码允许我检索带有特定标签的产品,但是当我尝试使用页面或页面名而不是产品标签时,不会返回任何产品。我没有看到相关的产品页面或类似页面,除非我忽略了它。感谢对我可能出错的地方的洞察 function woo_products_by_name_shortcode( $atts, $content = null ) { // Get attributes extract(shortcode_atts(array( "ta

我想查询一个产品的标题或名称(slug)。下面的代码允许我检索带有特定标签的产品,但是当我尝试使用
页面
页面名
而不是
产品标签
时,不会返回任何产品。我没有看到相关的
产品页面
或类似页面,除非我忽略了它。感谢对我可能出错的地方的洞察

function woo_products_by_name_shortcode( $atts, $content = null ) {

        // Get attributes
        extract(shortcode_atts(array( "tags" => '' ), $atts));

        ob_start();
        // Define Query Arguments
        $args = array(
                                //'post_type'    => array('product','product_variation'),
                                'post_type'    => 'product',
                                'posts_per_page' => 5,
                                'product_tag'    => $tags
                                );

        // Create the new query
        $loop = new WP_Query( $args );

        // Get products number
        $product_count = $loop->post_count;

        // If results
        if( $product_count > 0 ) :

更新:

要按产品的slug查询产品,请使用
“name”
参数或按产品的标题查询产品,请使用
“title”参数:

function woo_products_by_name_shortcode( $atts, $content = null ) {

    // Get attributes
    extract( shortcode_atts( array( 
        'tags' => '',
        'name' => ''
        'title' => ''
    ), $atts ));

    ob_start();

    // Define Query Arguments
    $loop = new WP_Query( array(
        'post_type'      => 'product',
        'post_status'    => 'publish',
        'posts_per_page' => 5,
        'product_tag'    => $tag,
        'name'           => $name,
        'title'          => $title
    ) );

    // Get products number
    $product_count = $loop->post_count;

    // Test raw output
    echo '<pre>'; print_r($loop->posts); echo '</pre>'; 
function-woo\u-products\u-by\u-name\u-shortcode($atts,$content=null){
//获取属性
提取(短码)附件(数组(
'标签'=>'',
“名称”=>“
“标题”=>“
)美元(附件);;
ob_start();
//定义查询参数
$loop=新的WP\U查询(数组(
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“每页帖子数”=>5,
“产品标签”=>$tag,
“name”=>$name,
“title”=>$title
) );
//获取产品编号
$product\U count=$loop->post\U count;
//测试原始输出
回显“”;打印($loop->posts);回显“”;
测试和工作


官方文档:

是的,看起来可能有其他错误,因为无论使用的是
标题
还是
名称
,都返回了相同的产品。我以前看到过这一点,并假设我做错了什么。假设在插件verse functions.php中定义它不会有什么区别。如果查询产品标题使用“名称”之所以有效,是因为标题在内部使用
sanitize\u title\u for\u query()
函数进行了清理。这可能就是原因。如果加上的答案回答了您的问题,请不要忘记接受答案。谢谢。