Php 使用快捷码显示自定义帖子

Php 使用快捷码显示自定义帖子,php,html,wordpress,shortcode,Php,Html,Wordpress,Shortcode,我已经在这个论坛上搜索了两天的帮助,但是我找不到一个解决方案来实现我的目标 我有一个名为“product”的自定义帖子类型,在该帖子类型中的每个帖子中有两个自定义字段,分别称为produktnamn(一个带有产品名称的文本字段)和produktbild(一个产品图像)。就这样 现在我需要一个短代码,通过输入slug(与它的名称相同)来显示该post类型中的特定post 像这样: [产品名称=“我的产品”] 这将在一些HTML标记中呈现名称和产品图像 请帮忙 到目前为止,我的代码是: //Prod

我已经在这个论坛上搜索了两天的帮助,但是我找不到一个解决方案来实现我的目标

我有一个名为“product”的自定义帖子类型,在该帖子类型中的每个帖子中有两个自定义字段,分别称为produktnamn(一个带有产品名称的文本字段)和produktbild(一个产品图像)。就这样

现在我需要一个短代码,通过输入slug(与它的名称相同)来显示该post类型中的特定post

像这样: [产品名称=“我的产品”]

这将在一些HTML标记中呈现名称和产品图像

请帮忙

到目前为止,我的代码是:

//Product image
function cpt_content_func($atts){

    extract( shortcode_atts(['name' => null], $atts ) );

    $args = [
        'name' => $slug,
        'post_type' => 'product',
        'numberposts' => 1
    ];

    $posts = get_posts( $args );
    $post = $post[0];

    $title = $post->title;
    $id = $post->ID;

    get_post_meta('produktbild', $id);

    $content = $post[0]->post_title;
    return '<h3>'.$content.'</h3>';
}

add_shortcode('product','cpt_content_func');
//产品图像
函数cpt\u content\u func($atts){
提取(短码_atts(['name'=>null],$atts));
$args=[
'name'=>$slug,
“post_类型”=>“产品”,
“numberposts”=>1
];
$posts=get_posts($args);
$post=$post[0];
$title=$post->title;
$id=$post->id;
get_post_meta('produktbild',$id);
$content=$post[0]->post_title;
返回“.$content.”;
}
添加快捷码(“产品”、“cpt内容”功能);
解决了。这是密码

function display_custom_post_type( $atts ){
// Handle the attributes
$atts = shortcode_atts(
    array(
        'cat' => ' '
    ), 
$atts, 'products_by_cat' );

// Set default values for the post
$args = array(
    'posts_per_page' => -1,
    'post_type' => 'product',
    'post_status' => 'publish',
    'category' => $atts['cat']
);
// Get posts
$posts_array = get_posts( $args );

// Check if posts exist
if( !empty($posts_array) ){
    $string = '<div class="row">';
    foreach( $posts_array as $post ){
        $string .= '<div class="col-sm-3 text-center">';
        $string .= '<div class="product-container">';
        $string .= '<a href="' . get_field( "order_link", $post->ID ) . '">';
        $string .= '<img class="product-img" src="' . get_field( "produktbild", $post->ID ) . '">';
        $string .= '</a>';
        $string .= '</div>';
        $string .= '<p class="product-btn">' . get_field( "produktnamn", $post->ID ) . '</p>';
        $string .= '</div>';
    }
    $string .= '</div>';
} else {
    // Didn't find any posts.
}

// Return HTML
  return $string;
功能显示\自定义\后置类型($atts){
//处理属性
$atts=短码\附加(
排列(
“猫”=>“
), 
$atts,“产品由”猫“;
//为帖子设置默认值
$args=数组(
“每页帖子数”=>-1,
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“类别”=>$atts[“类别”]
);
//发帖
$posts\u array=get\u posts($args);
//检查是否存在帖子
如果(!空($posts\u数组)){
$string='';
foreach($posts\u数组作为$post){
$string.='';
$string.='';
$string.='';
$string.='';
$string.='

'.get_字段(“produktnamn”,$post->ID)。'

'; $string.=''; } $string.=''; }否则{ //没有找到任何帖子。 } //返回HTML 返回$string;
我同意詹姆斯的观点——我只会使用woocommerce

但您的第一步必须是学习如何构建短代码:


一旦你尝试创建自己的短代码,如果事情仍然不起作用,那就是寻求帮助的时候了。

你有什么理由不能只使用WooCommerce吗?我的理由是我希望网站非常轻巧。我不需要整个网站的电子商务功能包。我们只展示我们的一些产品(最多20种产品)在某些页面上。这是我追求的唯一功能。我认为在特定页面上创建一个简短代码来显示示例4中的产品会容易得多。订购产品的整个电子商务页面都是外部和外部的wordpress。但是请随时与我讨论为什么我仍然应该使用woocommerce。我有点不确定对于所有这些,我在实践中学习。:)我的建议是对这个问题进行编码尝试。SO上没有人会从头开始为你做所有的事情。这就是你被否决的原因。事实上,我真正的建议是使用WooCommerce lol。我明白!我只是认为没有必要显示我的代码,因为它可能是一团乱麻。哈哈。但我已经将它添加到我的第一篇帖子中了!我知道是我的一个朋友告诉我的(他不想一路帮助我)他说,既然我在这篇文章类型上使用了高级自定义字段,我就可以编写这段代码,并根据我的需要对其进行自定义,以便从每个产品中获取这两个字段,这基本上就是我所需要的。但我不知道将其放在哪里,或者从我现有的代码中删除什么,即教程是错误的、过时的,不应该删除我已经为同一个网站写了很多短代码。