Php 基于Woocommerce中的快捷码atts名称查询产品标题或slug
我想查询一个产品的标题或名称(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
页面
或页面名
而不是产品标签
时,不会返回任何产品。我没有看到相关的产品页面
或类似页面,除非我忽略了它。感谢对我可能出错的地方的洞察
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()
函数进行了清理。这可能就是原因。如果加上的答案回答了您的问题,请不要忘记接受答案。谢谢。