कैसे करें the_archive_title ()?


40

मेरे बाल विषय में archive.php, मेरे पास अपने संग्रह पृष्ठों का शीर्षक प्रदर्शित करने के लिए निम्नलिखित कोड है:

    <?php
        the_archive_title( '<h1 class="page-title">', '</h1>' );
    ?>

लेकिन यह मेरे शीर्षक को "श्रेणी: " के बिना केवल शीर्षक के बजाय "श्रेणी: श्रेणी शीर्षक " के रूप में प्रदर्शित करता है ।

मेरी पहली वृत्ति get_the_archive_title()से आगे निकल जाना था wp-includes/general-template। लेकिन जो मैंने पढ़ा है, जाहिर है, मैं कभी भी वर्डप्रेस कोर सामान को बदलने वाला नहीं हूं, यहां तक ​​कि एक बाल विषय से ओवरराइड भी।

तो उत्पादन को नियंत्रित करने का सबसे अच्छा तरीका क्या है the_archive_title()?


एक अलग उत्तर के रूप में अपना समाधान पोस्ट करें। आप मेरी भी अस्वीकार कर सकते हैं और यदि आप चाहें तो अपना खुद का स्वीकार कर सकते हैं :-)
पीटर गोयन

ओह, मुझे लगा कि मैंने यह संपादन हटा दिया है। आपकी विधि बेहतर होने के कारण समाप्त हो गई, इसलिए मेरा मतलब था कि मैं इसे हटा दूं। मैं अभी करूँगा।
fildred13

जवाबों:


40

यदि आप के स्रोत कोडget_the_archive_title() को देखते हैं, तो आप देखेंगे कि एक फ़िल्टर आपूर्ति की गई है, जिसे कहा जाता है get_the_archive_title, जिसके माध्यम से आप फ़ंक्शन से आउटपुट फ़िल्टर कर सकते हैं।

आप किसी श्रेणी पृष्ठ पर आउटपुट बदलने के लिए निम्नलिखित का उपयोग कर सकते हैं

add_filter( 'get_the_archive_title', function ( $title ) {

    if( is_category() ) {

        $title = single_cat_title( '', false );

    }

    return $title;

});

6
यह Archive: Books(जहां Booksएक कस्टम पोस्ट प्रकार है) शीर्षक के साथ एक संग्रह पृष्ठ पर काम नहीं करता है । single_cat_title()समारोह केवल एक पृष्ठ शीर्षक लौटाता है यदि प्रकार एक है श्रेणी या टैग । क्या आप सभी सामग्री प्रकारों के साथ काम करने वाले समाधान को शामिल करने के लिए अपने उत्तर में संशोधन कर सकते हैं?
क्विन कॉमेन्डेंट

@ क्विनकैमेंडर स्रोत कोड, रेखाएँ 1239 और 1240 :-) देखें। यदि आपके पास कोई मुद्दा है, तो बस अपने प्रश्न के लिए एक नया प्रश्न पूछें
पीटर गोसन

1
ठीक है, प्रत्येक को प्रत्येक वर्गीकरण या पोस्ट प्रकार के लिए एक वैकल्पिक शीर्षक वापस करना चाहिए, जिसके लिए वे अलग-अलग शीर्षक चाहते हैं। मैंने एक उत्तर पोस्ट किया है जो सभी प्रकारों से उपसर्गों को बाहर करता है।
क्विन कंटेंडर

28

स्वीकृत उत्तर Category:श्रेणी संग्रह शीर्षक से उपसर्ग को हटाने के लिए काम करता है , लेकिन अन्य वर्गीकरण या पोस्ट प्रकार नहीं। अन्य उपसर्गों को बाहर करने के लिए, दो विकल्प हैं:

  1. मूल get_the_archive_title()फ़ंक्शन में उपयोग किए जाने वाले सभी प्रकारों के लिए शीर्षक का पुनर्निर्माण करें :

    // Return an alternate title, without prefix, for every type used in the get_the_archive_title().
    add_filter('get_the_archive_title', function ($title) {
        if ( is_category() ) {
            $title = single_cat_title( '', false );
        } elseif ( is_tag() ) {
            $title = single_tag_title( '', false );
        } elseif ( is_author() ) {
            $title = '<span class="vcard">' . get_the_author() . '</span>';
        } elseif ( is_year() ) {
            $title = get_the_date( _x( 'Y', 'yearly archives date format' ) );
        } elseif ( is_month() ) {
            $title = get_the_date( _x( 'F Y', 'monthly archives date format' ) );
        } elseif ( is_day() ) {
            $title = get_the_date( _x( 'F j, Y', 'daily archives date format' ) );
        } elseif ( is_tax( 'post_format' ) ) {
            if ( is_tax( 'post_format', 'post-format-aside' ) ) {
                $title = _x( 'Asides', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
                $title = _x( 'Galleries', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
                $title = _x( 'Images', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
                $title = _x( 'Videos', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
                $title = _x( 'Quotes', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
                $title = _x( 'Links', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
                $title = _x( 'Statuses', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
                $title = _x( 'Audio', 'post format archive title' );
            } elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
                $title = _x( 'Chats', 'post format archive title' );
            }
        } elseif ( is_post_type_archive() ) {
            $title = post_type_archive_title( '', false );
        } elseif ( is_tax() ) {
            $title = single_term_title( '', false );
        } else {
            $title = __( 'Archives' );
        }
        return $title;
    });
    
  2. या, बस एक शीर्षक उपसर्ग की तरह दिखने वाली किसी भी चीज़ को छीन लें (जो वास्तविक शीर्षक को बदल सकता है जिसमें एक शब्द बृहदान्त्र द्वारा पीछा किया जाता है):

    // Simply remove anything that looks like an archive title prefix ("Archive:", "Foo:", "Bar:").
    add_filter('get_the_archive_title', function ($title) {
        return preg_replace('/^\w+: /', '', $title);
    });
    

6

आप उपयोग कर सकते हैं

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>';

यह पुरालेख के शीर्षक के साथ एक संग्रह पृष्ठ पर काम नहीं करता है: पुस्तकें (जहां पुस्तकें एक कस्टम पोस्ट प्रकार है)।
यही कारण है कि ब्राजील के लड़के

@ThatBrazilianGuy आंतरिक रूप से single_cat_titleउपयोग करता है single_term_title, जो टैक्सोनोमी पर भी काम करता है। सुनिश्चित करें कि आपकी थीम में निम्नलिखित में से कोई एक टेम्पलेट निर्धारित नहीं है: taxonomy-book.phpया taxonomy.php, क्योंकि उनका पूर्ववर्ती होना आवश्यक है archive.php। इसके अलावा, अन्य उत्तरों में किसी भी विधि का परीक्षण करने पर विचार करें। यह उत्तर काफी पुराना है, यह उस समय ठीक काम कर रहा था जब मैंने इसे पोस्ट किया था, लेकिन मैं अब वर्डप्रेस के लिए विकसित नहीं कर रहा हूं।
आंद्रेई घोरघिउ

6

एक अन्य विकल्प है:

<?php echo str_replace('Brand: ','',get_the_archive_title()); ?>

ब्रांड बदलें: जिस भी पाठ से आप छुटकारा पाना चाहते हैं।

इसका मूल्य get_the_archive_title () और the_archive_title () the_archive_title () एक सरणी देता है get_the_archive_title () एक स्ट्रिंग लौटाता है


the_archive_title () शीर्षक गूँजता है और get_the_archive_title () नहीं करता है, इसलिए वे मूल रूप से समान हैं। यदि आपको सामग्री को बदलने की आवश्यकता है तो आप उपयोग करेंगे।
राबर्ट

1

बेन गिलबैंक के पास एक अच्छा समाधान है जो सभी प्रकार के पोस्ट और टैक्सोनोमी को संभालता है:

function hap_hide_the_archive_title( $title ) {
// Skip if the site isn't LTR, this is visual, not functional.
// Should try to work out an elegant solution that works for both directions.
if ( is_rtl() ) {
    return $title;
}
// Split the title into parts so we can wrap them with spans.
$title_parts = explode( ': ', $title, 2 );
// Glue it back together again.
if ( ! empty( $title_parts[1] ) ) {
    $title = wp_kses(
        $title_parts[1],
        array(
            'span' => array(
                'class' => array(),
            ),
        )
    );
    $title = '<span class="screen-reader-text">' . esc_html( $title_parts[0] ) . ': </span>' . $title;
}
return $title;
}
add_filter( 'get_the_archive_title', 'hap_hide_the_archive_title' );

0

आप post_type_archive_title()"अभिलेखागार:" पाठ के बिना एक संग्रह का शीर्षक प्राप्त करने के लिए उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.