2010-08-12 13 views
9

की निर्यात सूची संबंधित पोस्ट शीर्षक के साथ वर्डप्रेस में सुंदर परमालिंक की एक सूची निर्यात करने का एक तरीका तलाश रही है। वास्तविक परमालिंक संरचना की तलाश में शॉर्टलिंक परिभाषित नहीं किया गया है। मुझे लगता है कि अगर मुझे एक छोटा लिंक उपयोग करना है, लेकिन मैं पूर्ण परमालिंक पसंद करता हूं।सुंदर परमालिंक और पोस्ट शीर्षक

कोई भी सुझाव उपयोगी होगा।

धन्यवाद

+0

मदद करता है जब हम तालिका (ओं) और कॉलम को शामिल करते हैं - हम सभी को वर्डप्रेस डेटा मॉडल –

+1

@OMG टट्टू नहीं पता: यदि आप वर्डप्रेस डेटा मॉडल नहीं जानते हैं तो आप इसका उत्तर देने में बहुत मदद नहीं करेंगे सवाल; परमालिंक सीधे डेटाबेस में संग्रहीत नहीं होते हैं। शुक्र है कि हम सभी के पास सप्ताह के भीतर सार्वजनिक रूप से स्टैक एक्सचेंज से एक नया वर्डप्रेस जवाब होगा! जब ऐसा होता है तो संभवत: वहां वर्डप्रेस प्रश्न पूछने वाले लोगों को रूट करने के लिए समझदारी होगी क्योंकि हमारे पास बहुत सारे उपयोगकर्ता हैं जो वर्डप्रेस डेटा मॉडल को अंततः वर्डप्रेस के अन्य सभी पहलुओं को जानते हैं! – MikeSchinkel

+0

@ माइकस्चिंकेल: * Riight * ... क्योंकि मैंने क्वेरी ऑप्टिमाइज़ेशन फीडबैक प्रदान करने से पहले किसी और के डेटा मॉडल को कभी नहीं सीखना था। यदि प्रश्न प्रचलित थे, तो मैंने पहले ही डेटा मॉडल सीखा होगा। लेकिन उस के साथ शुभकामनाएं! –

उत्तर

29

यहाँ एक स्टैंडअलोन PHP फ़ाइल आप /export.php जैसा कुछ कहा अपनी वेबसाइट की जड़ में बचा सकता है और इसके साथ पोस्ट की एक टैब-सीमांकित सादा पाठ सूची भेज देंगे जब आप अपने ब्राउज़र से कॉल करने की सुंदर परमालिंक, पोस्ट शीर्षक और (बोनस के रूप में) पोस्ट प्रकार।

बस अपने ब्राउज़र में यूआरएल लोड करें और फिर के रूप में सहेजें "टेक्स्ट फ़ाइल में आप Excel में लोड कर सकते हैं या फिर आपको इसे संसाधित करने की आवश्यकता है।

<?php 

include "wp-load.php"; 

$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish'); 
$posts = $posts->posts; 
/* 
global $wpdb; 
$posts = $wpdb->get_results(" 
    SELECT ID,post_type,post_title 
    FROM {$wpdb->posts} 
    WHERE post_status<>'auto-draft' AND post_type NOT IN ('revision','nav_menu_item') 
"); 
*/ 

header('Content-type:text/plain'); 
foreach($posts as $post) { 
    switch ($post->post_type) { 
     case 'revision': 
     case 'nav_menu_item': 
      break; 
     case 'page': 
      $permalink = get_page_link($post->ID); 
      break; 
     case 'post': 
      $permalink = get_permalink($post->ID); 
      break; 
     case 'attachment': 
      $permalink = get_attachment_link($post->ID); 
      break; 
     default: 
      $permalink = get_post_permalink($post->ID); 
      break; 
    } 
    echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}"; 
} 

उम्मीद है कि इससे मदद मिलती है।

-माइक

पीएस मैंने मानक वर्डप्रेस WP_Query() का उपयोग किया था, लेकिन यदि आप इसके बजाय इसका उपयोग करने के लिए पसंद करते हैं (या आवश्यकता) में एक टिप्पणी-आउट एसक्यूएल भी शामिल किया गया है।

+0

धन्यवाद मिके। मुझे चेतावनी मिल रही है: कुछ कारणों से लाइन 7 पर foreach() के लिए अमान्य तर्क – jeff

+0

क्षमा करें, मैंने कोड पोस्ट करने से पहले एक दुर्भाग्यपूर्ण संपादन किया, दोह! फिक्स्ड! – MikeSchinkel

+0

धन्यवाद माइक, पुरानी पोस्ट लेकिन अभी भी बहुत प्रभावी स्निपेट जिसने अभी चाल की है ;-) बढ़िया! – quokka

6

ईई पर इस एक आज सुबह :) http://wp.daveheavyindustries.com/2011/02/08/wordpress-permalink-via-sql/

इस प्रश्न के लिए आप

SELECT wpp.post_title, 
     wpp.guid, 
     wpp.post_date, 
     CONCAT 
     (
      wpo_su.option_value, 
      REPLACE 
      (
      REPLACE 
      (
       REPLACE 
       (
       REPLACE 
       (
        wpo.option_value, 
        '%year%', 
        date_format(wpp.post_date,'%Y') 
       ), 
       '%monthnum%', 
       date_format(wpp.post_date, '%m') 
      ), 
       '%day%', 
       date_format(wpp.post_date, '%d') 
      ), 
      '%postname%', 
      wpp.post_name 
     ) 
     ) AS permalink 
    FROM wp_posts wpp 
    JOIN wp_options wpo 
    ON wpo.option_name = 'permalink_structure' 
    AND wpo.blog_id = 0 
    JOIN wp_options wpo_su 
    ON wpo_su.option_name = 'siteurl' 
    AND wpo_su.blog_id = wpo.blog_id 
WHERE wpp.post_type = 'post' 
    AND wpp.post_status = 'publish' 
ORDER BY wpp.post_date DESC 
0

मैं भी इस समाधान और धन्यवाद मूल समाधान के लिए @MikeSchinkle चाहता था यह करना चाहिए जवाब दे दिया। मैंने एक्सेल के लिए सादे पाठ में उन लिंक को निर्यात करने के लिए इसका उपयोग किया और फिर मेरी रीडायरेक्ट सूची बनाएं।

लेकिन फिर मैंने पाया कि मैं भी लाइव, सक्रिय लिंक के साथ समाधान चाहता था।

तो मैं wp_query पोस्ट प्रकार का उपयोग कर इस्तेमाल किया "किसी भी" और बनाया एक खोज फॉर्म के साथ एक page template निम्न क्वेरी (अपने विषय फिट करने के लिए आप मनचाहे ढंग से अनुकूलित) के साथ शामिल थे। नोट मुझे असीमित परिणाम लौटने के लिए posts_per_page पर -1 सेट करना पड़ा था। यह परिणाम इस प्रकार परिणाम देता है: "शीर्षक - परमालिंक"

<?php 
     $type = 'any'; 
     $args = array (
     'post_type' => $type, 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
      'order' => 'DESC', 

     ); 
     $temp = $wp_query; // assign ordinal query to temp variable for later use 
     $wp_query = null; 
     $wp_query = new WP_Query($args); 
     if ($wp_query->have_posts()) : 
      while ($wp_query->have_posts()) : $wp_query->the_post(); 
      ?> 

       <?php the_title(); ?> - <a href="<?php the_permalink() ?>" rel="bookmark" title="View The <?php the_title_attribute(); ?>"><?php the_permalink() ?></a><br /> 
<?php endwhile; ?> 
<?php else : 
      echo '<h2>Sorry, we didnt find any results to match. Please search again below or call us at 800-828-4228 and we will be happy to help!</h2>'; 
      get_search_form(); 
     endif; 

    $wp_query = null; 
    $wp_query = $temp; // Reset 
?> 

आशा है कि दूसरों की सहायता करें।

संबंधित मुद्दे