รับโพสต์ข้อความแรก


10

ฉันจะรับเฉพาะข้อความแรกของประเภทโพสต์ที่กำหนดเองได้อย่างไร
ฉันจะได้รับทั้งหมด - ไม่มีปัญหา นี่คือสิ่งที่ฉันใช้เพื่อคว้าพวกเขาทั้งหมด

<?php foreach ($terms as $term) {echo '<a href="'.get_term_link($term->slug, 'sitecat').'">'.$term->name.'</a>,';} ?> >> <a href="<?php the_permalink(); ?>"><?php the_title('', ''); ?></a></h2></span>

จะขอบคุณคำตอบที่ใช้รหัสของฉัน แต่ความช่วยเหลือใด ๆ ยินดีมากที่สุด

คำตอบ:


23

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยอนุกรมวิธาน 'ก่อน' ... แต่

$terms = get_the_terms( $post->ID, 'mytaxonomy' );

ส่งกลับอาร์เรย์ของวัตถุคำอนุกรมวิธานดังนั้น

$term = array_pop($terms);

จะให้เทอมแรกในอาร์เรย์ แล้ว:

echo '<a href="'.get_term_link($term->slug, 'mytaxonomy').'">'.$term->name.'</a>,'

(คุณอาจต้องการรวมบางคำสั่งถ้าในกรณีที่อาร์เรย์ว่างหรือข้อผิดพลาดจะถูกส่งกลับ (ดูis_wp_error)


เพิ่งลองสิ่งนี้ .. รับข้อผิดพลาด: ข้อผิดพลาดร้ายแรงที่จับได้: วัตถุของคลาส WP_Error ไม่สามารถแปลงเป็นสตริงใน /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php ที่บรรทัด 40
Sagive SEO

ในบรรทัดที่ 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ แง่); echo '<a href="'.get_term_link($term-> กระสุน,' sitecat ').' "> '. $ term-> ชื่อ' </a> '; ?>
Sagive SEO

ตกลง .. ข้อผิดพลาดอยู่ข้างฉัน - ไม่ใช่คำตอบของคุณ;) ขอบคุณมากเพื่อน
Sagive SEO

5

ในฐานะของ PHP 5.4 คุณสามารถอ้างอิงอาร์เรย์ได้โดยตรงเพื่อรับเทอมแรกคุณสามารถทำได้ง่ายๆ

$first_term = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0];
var_dump( $first_term );

หากคุณต้องการคุณสมบัติเฉพาะ ( พูดชื่อคำ ) ของคำแรกคุณสามารถทำสิ่งต่อไปนี้

$first_term_name = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0]->name;
var_dump( $first_term_name );

แก้ไข

เพียงแค่ทราบนี้จะมีการดึงกลับเพราะคุณจะได้รับWP_Errorวัตถุหากอนุกรมวิธานไม่ถูกต้อง นอกจากนี้หากอาร์เรย์ที่ส่งคืนว่างเปล่าคุณจะได้รับคำเตือนเกี่ยวกับคีย์อาร์เรย์ที่ไม่ได้กำหนดดังนั้นให้ใช้ด้วยความระมัดระวัง


0

มันใช้งานได้สำหรับฉัน มันนำเฉพาะหมวดหมู่แรกเป็นข้อความไม่ยึดเหนี่ยว

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}

1
"ทำงานให้คุณ" อะไร? Sidenote: เครื่องมือbreak;จะหยุดคำสั่งของคุณจริงๆunsetจะไม่ถูกเรียกใช้และจะมีการประมวลผลรายการแรกเท่านั้น
ไกเซอร์

unset( $term );ควรอยู่หลังforeachลูปของคุณและไม่อยู่ข้างใน :-)
Pieter Goosen

0

เข้าถึงคีย์ของวัตถุโดยตรงได้อย่างไร

$terms = get_the_terms( $post->ID, 'sitecat' );
$first_term = $terms[0];

เพื่อให้คุณสามารถเข้าถึงวัตถุ

echo $first_term->name;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.