कस्टम पोस्ट प्रकार के लिए नई पोस्ट की स्थिति


13

मेरे पास एक कस्टम पोस्ट प्रकार है recipes। मैं डेटाबेस में स्वचालित रूप से समाचार एकत्र करने के लिए एक क्रोन स्क्रिप्ट का उपयोग कर रहा हूं।

वर्तमान में इसे 'लंबित समीक्षा' के रूप में आयात और सहेजा जा रहा है। क्या एक और पोस्ट स्टेटस बनाना संभव है, Aggregatedजो प्रकाशित होने वाले सभी समाचारों को सूचीबद्ध करेगा?

मैंने register_post_statusफ़ंक्शन का उपयोग करने की कोशिश की , हालांकि यह काम नहीं करता था:

function custom_post_status(){
    register_post_status( 'aggregated', array(
        'label'                     => _x( 'Aggregated', 'recipes' ),
        'public'                    => false,
        'exclude_from_search'       => true,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Aggregated <span class="count">(%s)</span>', 'Aggregated <span class="count">(%s)</span>' ),
    ) );
}
add_action( 'init', 'custom_post_status' );

इसके लिए मदद के लिए धन्यवाद।


मुझे लगता है कि कोड सही है। हो सकता है कि आपके पास इसे कॉल करने के लिए किसी अन्य फ़ंक्शन में यह स्रोत हो। जब add_action () चलाते हैं?
bueltge

क्या आप कृपया अधिक विवरण में अपना उत्तर बता सकते हैं? धन्यवाद!
22

क्या एक वर्ग या कार्य के अंदर add_action ('init') है, वहाँ आप एक अन्य हुक के बारे में कहते हैं। यह संभव है, कि आप इसे अक्षांश और हुक से प्रारंभ करें और न ही निकाल सकते हैं।
bueltge

आपने इस मुद्दे को कैसे हल किया? मुझे अब भी यही समस्या है। मैं कस्टम-पोस्ट व्यवस्थापक क्षेत्र की ड्रॉप डाउन सूची में नई कस्टम स्थिति जोड़ना पसंद करता हूं, जो उपयोगकर्ता को स्टेटी की सूची से (पेंडिग रेवीव, ड्राफ्ट, NEW_CUSTOM_STATUS) का चयन करने की अनुमति देता है ...
ट्रीसो

जवाबों:


9

यहाँ कैसे करना है, इस बारे में स्टेप बाय स्टेप विवरण के बारे में बहुत कुछ है। http://jamescollings.co.uk/blog/wordpress-create-custom-post-status/

ड्रॉप-डाउन मेन्यू में अपनी कस्टम पोस्ट स्थिति जोड़ने के लिए, बस अपने थीम फ़ंक्शन स्क्रिप्ट में निम्न जोड़ें:

add_action('admin_footer-post.php', 'jc_append_post_status_list');
function jc_append_post_status_list(){
 global $post;
 $complete = '';
 $label = '';
 if($post->post_type == 'recipes'){
      if($post->post_status == 'aggregated'){
           $complete = ' selected=\"selected\"';
           $label = '<span id=\"post-status-display\"> Aggregated</span>';
      }
      echo '
      <script>
      jQuery(document).ready(function($){
           $("select#post_status").append("<option value=\"aggregated\" '.$complete.'>Aggregated</option>");
           $(".misc-pub-section label").append("'.$label.'");
      });
      </script>
      ';
  }
}

इस के साथ आप अपने कस्टम पोस्ट की स्थिति और 5 मिनट में चल रहे हैं, मुझे समय का एक गुच्छा बचाया!


1
लिंक टूट गया है। यहां सबसे नया संस्करण है
rinogo

@rinogo धन्यवाद आदमी, आपके द्वारा प्रदत्त
आर्काइव.ऑर्ग

7

आपका कोड ध्वनि होना चाहिए, और $ wp_post_statuses वैश्विक सरणी में वांछित स्थिति जोड़ना चाहिए।

यदि आप इसे व्यवस्थापन ड्रॉप-डाउन में दिखाने की अपेक्षा कर रहे हैं, हालाँकि, यह एक जारी समस्या है: https://core.trac.wordpress.org/ticket/12706


1

कस्टम पोस्ट प्रकार "व्यंजनों" के लिए एक पोस्ट स्थिति "एकत्रित" दर्ज करें:

register_post_status( 'aggregated', array(
                    'label'                     => _x( 'Aggregated ', 'post status label', 'bznrd' ),
                    'public'                    => true,
                    'label_count'               => _n_noop( 'Aggregated s <span class="count">(%s)</span>', 'Aggregated s <span class="count">(%s)</span>', 'plugin-domain' ),
                    'post_type'                 => array( 'recipes' ), // Define one or more post types the status can be applied to.
                    'show_in_admin_all_list'    => true,
                    'show_in_admin_status_list' => true,
                    'show_in_metabox_dropdown'  => true,
                    'show_in_inline_dropdown'   => true,
                    'dashicon'                  => 'dashicons-businessman',
                ) );

"रेसिपी" कस्टम पोस्ट में स्क्रीन की प्रकाशित मेटाबॉक्स को संपादित करें, ड्रॉपडाउन में कस्टम पोस्ट की स्थिति को जोड़ना और "ड्राफ्ट सहेजें" बटन लेबल को बदलना अगर चयनित पोस्ट की स्थिति "एकत्रित" है:

add_action('admin_footer-post.php',function(){

    global $post;
    $complete = '';
    $label = '';

    if($post->post_type == 'recipes') {

        if ( $post->post_status == 'aggregated' ) {
            $complete = ' selected=\"selected\"';
            $label    = 'Aggregated';
        }

        $script = <<<SD


       jQuery(document).ready(function($){
           $("select#post_status").append("<option value=\"aggregated\" '.$complete.'>Aggregated</option>");

           if( "{$post->post_status}" == "aggregated" ){
                $("span#post-status-display").html("$label");
                $("input#save-post").val("Save Aggregated");
           }
           var jSelect = $("select#post_status");

           $("a.save-post-status").on("click", function(){

                if( jSelect.val() == "aggregated" ){

                    $("input#save-post").val("Save Aggregated");
                }
           });
      });


SD;

        echo '<script type="text/javascript">' . $script . '</script>';
    }

});

कस्टम पोस्ट व्यवस्थापक ग्रिड की त्वरित संपादन स्क्रीन में कस्टम पोस्ट की स्थिति जोड़ें:

add_action('admin_footer-edit.php',function() {
    global $post;
    if( $post->post_status == 'recipes' ) {
        echo "<script>
    jQuery(document).ready( function() {
        jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"aggregated\">Aggregated</option>' );
    });
    </script>";
    }
});

कस्टम पोस्ट व्यवस्थापक ग्रिड में कुल पोस्ट की स्थिति प्रदर्शित करें:

add_filter( 'display_post_states', function( $statuses ) {
    global $post;

    if( $post->post_type == 'recipes') {
        if ( get_query_var( 'post_status' ) != 'aggregated' ) { // not for pages with all posts of this status
            if ( $post->post_status == 'aggregated' ) {
                return array( 'Aggregated' );
            }
        }
    }
    return $statuses;
});

ठीक वही जो मेरे द्वारा खोजा जा रहा था। हालाँकि, यह अभी भी कस्टम पोस्ट स्थिति को बल्क पोस्ट एडिट स्टेटस ड्रॉपडाउन में याद करता है।
मार्टिन स्कवार्ट्ज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.