1

ウェブサイトではすべての製品が投稿ですが、新製品を追加するときは、ニュースレターのようなものが必要です。ほとんどの場合、ホームページのサイドバーでその月の新製品やイベントを見ることができる投稿のようなものです.

新しいニュースレターごとに製品を再投稿したくないので、ページを使用しているので、ページ内に投稿を表示したい.

製品ページでは、すべての製品をカテゴリとサブカテゴリで分けていますが、特定の投稿をグループ化してサイドバーに公開したいので、ページが最適な方法だと思います.

現在、私はこのコードを使用しています:

<?php
$productos = new WP_Query(array(
'post__in'=> array(81, 83),
'orderby'=>'title',
'order'=>'ASC'
)
); if ($productos->have_posts()) : while ($productos->have_posts()) : $productos->the_post();
?>

ID が 81 と 83 の投稿が表示されます。名前を使用する代わりに、新しい投稿の ID を確認するのに時間がかかるため、コーデックスにあるように「名前」を使用してスラッグで投稿を表示したいと思います。すべての新製品ですが、配列で機能しないか、何か間違っています。

今、私はこの作品のようなものを作るのが大好きです

$names = get_post_meta($post->ID, "names", $single = true); 

$productos = new WP_Query(array(
'name'=> array($names),
'orderby'=>'title',
'order'=>'ASC'
)
);

そのため、新しいページを公開するたびに、ページに含めたい投稿のスラッグをカスタム フィールドに書き込むだけです。ここで質問する前に、うまくいく可能性のあるものをたくさん見つけてください。

ggis インライン投稿プラグインを試してみましたが、機能しますが、含めたいすべての投稿の ID が必要です。投稿の出力に別の順序が必要なため、プラグインを編集する必要があります。プラグインに大きく依存します。

アップデート:

だから私は今、ショートコードを使ってこれを作ることができるかどうか探しています.今、私はこれを持っています:

function producto_func($atts) {
    extract(shortcode_atts(array(
        'nombre' => ''
    ), $atts));
    global $post;
    $pieza = get_page_by_title($nombre,OBJECT, 'post');
                echo '<h1>'. $pieza->ID . '</h1>';
}
add_shortcode('producto', 'producto_func');
enter code here

そのため、ページにショートコードを入力するだけ[producto nombre="ff 244"]でその ID が表示され、必要な投稿の数に応じて任意の数のショートコードを追加できます。しかし、投稿の内容全体を表示するにはどうすればよいですか。

何か案が?

4

2 に答える 2

1

ショートコードを使用して解決策を見つけました。だから私はこれを自分の functions.php ページに入れました

function productos($atts, $content = null) {
    extract(shortcode_atts(array(
        "slug" => '',
        "query" => ''
    ), $atts));
    global $wp_query,$post;
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query(array( 
    'name'=> $slug,
    ));
    if(!empty($slug)){
        $query .= '&name='.$slug;
    }
    if(!empty($query)){
        $query .= $query;
    }
    $wp_query->query($query);
    ob_start();
    ?>
    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
        <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
        <div><?php the_content() ?></div>
    <?php endwhile; ?>

    <?php $wp_query = null; $wp_query = $temp;
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
add_shortcode("producto", "productos");

そして、私のページ テンプレートでは [producto slug="MY-SLUG"] と書くだけで、スラッグだけで複数の投稿を表示できます。誰かがこれが役に立つことを願っています。

于 2012-06-08T03:18:57.500 に答える
1

Wordpress Codexから:

投稿をスラッグで表示:

$query = new WP_Query( 'name=私の人生について' );

ページをスラッグで表示:

$query = new WP_Query( 'ページ名=連絡先' );

アップデート

これを変更してみてください:

'name'=> array($names),

これに:

'name'=> $names,

'name' および 'pagename' パラメーターは配列を取りません。文字列のみ。コンマ区切りのリストは、「名前」というタイトルのカスタム フィールド内から必要なものを提供する必要がありますが、私はこのアプローチをテストしていません。

また、query_posts の代わりに WP_Query を使用していただきありがとうございます。

于 2012-06-07T20:29:26.367 に答える